2017-01-02 64 views
0

我已经构建了一个Web应用程序,并试图将AngularJS框架合并到我的代码中。我已经建立了我的程序,以便我的<input type="number"/>ng-model="subtotal.subtotal1"指令和<td>元素的数据绑定元素如下{{subtotal.subtotal1}}
这个数据绑定表达式中的问题是,当窗口最初加载时,你可以在从我的javascript文件返回实际值之前短暂地看到未编译的数据(这意味着我暂时看到大括号)
这是我试过的为了解决我的问题:
1.将angular.js CDN文件移动到正文部分的结尾处和头部部分。
2.更改了我已包含的javascript文件的顺序
3.使用了ng-cloak,它不能跨浏览器(IE:Google Chrome)工作,看起来好像页面有故障。我宁愿不使用指令来解决这个问题,如果我被迫这样做,那么我会采用如下方式简单地在<td id="one">元素中显示值:document.getElementById("one").innerHTML="content"。虽然我知道我能做到这一点,而不Angular.js的点这个练习就是用角

我已经包含在<head>部分和<body>部分代码这有可能是问题(数据绑定,链接JavaScript文件和相应的JavaScript文件包括角代码)


如何在不使用ng-cloak的情况下停止未编译的数据?

<html ng-app="myModule1"> 
<head> 
    <meta charset="UTF-8"/> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/> 
    <meta name="viewport" content="width=device-width, initial-scale=1"/> 

    <link rel="stylesheet" type="text/css" href="css/bootstrap.css"/> 
    <link rel="stylesheet" type="text/css" href="css/style.css"/> 
    <link rel="stylesheet" type="text/css" href="vex/dist/css/vex.css"/> 
    <link rel="stylesheet" type="text/css" href="vex/dist/css/vex-theme-os.css"/> <br><br> 

div标签:

(该标签被包含在体标记内并包括ng-controller,所述<input type="number" ng-model="subtotal.subtotal1"/>,各<td>{{1.99*subtotal.subtotal1}}</td>

<div class="container" ng-controller="mycontroller1"> 
    <table class="table table-hover table-condensed"> 
       <form id="medication-product-1" method="POST"> 
         <tbody> 
          <tr> 
           <td data-th="Product"> 
            <div class="row"> 
             <div class="col-sm-2"> 
              <img id="small-pic2" src="images/benadryl.png"></img> 
             </div> 
             <div class="col-sm-10"> 
              <h4 class="nomargin"><input type="hidden" name="name1" value="Benadryl"> 
               Benadryl</input>  
              </h4> 
              <p> 
               A medication which reduces itching, sneezing, coughing through because of its properties as an anti-histamine. 
              </p> 
             </div> 
            </div> 
           </td> 

           <td data-th="Price"><input type="hidden" name="Price1" value=01.99> 
            $1.99</input> 
           </td> 

           <td data-th="Quantity"> 
            <input type="number" ng-model="subtotal.subtotal1" ng-init="subtotal.subtotal1=0" name="Quantity1" ng-change="changed()" id="amount1" class="form-control text-center" min="0"/> 
           </td> 

           <td data-th="Subtotal" id="subtotal-1" name="Subtotal" class="text-center">{{1.99*subtotal.subtotal1}}</td> 
           <td> 
            <input type="hidden" name="step" value="1"></input> 
            <button type="button" id="button1" name="button-1" class="btn btn-primary"> 
             Add To Cart<span class="glyphicon glyphicon-shopping-cart"></span> 
            </button> 
           </td> 
          </tr> 
        </form> 
        <form id="medication-product-2" method="POST"> 
          <tr> 
           <td data-th="Product"> 
            <div class="row"> 
             <div class="col-sm-2"> 
              <img src="images/motrin.jpg" id="small-pic"></img> 
             </div> 
             <div class="col-sm-10"> 
              <h4 > 
              <input type="hidden" name="name2" value="Motrin"></input> 
               Motrin 
              </h4> 
              <p> 
               Pain Reliever and Fever Reducer 
              </p> 
             </div> 
            </div> 
           </td> 

           <td data-th="Price"> 
           <input type="hidden" name="Price2" value="3.99"> 
            $3.99 
           </input>  
           </td> 

           <td data-th="Quantity"> 
            <input type="number" ng-model="subtotal.subtotal2" ng-change="changed2()" ng-init="subtotal.subtotal2=0" name="Quantity2" 
            id="amount2" min="0" class="form-control text-center"></input> 
           </td> 

           <td data-th="Subtotal" id="subtotal-2" 
           name="Subtotal" class="text-center" >{{3.99*subtotal.subtotal2}} 
           </td> 
           <td> 
           <input type="hidden" name="step" value="2"></input> 
            <button type="button2" id="button2" name="button-2" class="btn btn-primary"> 
             Add To Cart<span class="glyphicon glyphicon-shopping-cart"></span> 
            </button> 
           </td> 
          </tr> 
         </tbody> 
        </form> 
       </table> 
      </div> 



结束body标签:

<script type="text/javascript" src="http://code.jquery.com/jquery-3.1.1.js"></script> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.js"></script> 
     <script type="text/javascript" src="js/medication.js"></script> 
     <script type="text/javascript" src="vex/dist/js/vex.combined.js"></script> 
     <script type="text/javascript" vex.defaultOptions.className = 'vex-theme-os'></script> 
     <script type="text/javascript" src="js/bootstrap.js"></script> 
     <script type="text/javascript" src="js/signout.js"></script> 
    </body> 



medication.js:带有ang的javascript文件的部分ular代码。

window.onload=function(){ 
button1=document.getElementById("button1"); 
button2=document.getElementById("button2"); 
number1=document.getElementById("amount1"); 
number2=document.getElementById("amount2"); 
number2.value=0; 
number1.value=0; 
button1.disabled=true; 
button2.disabled=true; 

var medicine=angular.module("myModule1",[]) 
.controller("mycontroller1",function($scope){ 
     var subtotal={ 
      subtotal1:0, 
      subtotal2:0 

     } 
    $scope.subtotal=subtotal; 

     $scope.changed=function(){ 
     if(subtotal.subtotal1>0){ 
      button1.disabled=false; 
     } 
     else { 
      button1.disabled=true; 
     } 

     } 

    $scope.changed2=function(){ 
     if(subtotal.subtotal2>0){ 
      button2.disabled=false; 
     } 
     else{ 
      button2.disabled=true; 
     } 

    } 

}); 



同样,我不知道为什么我可以看到在TD元素的花括号。

回答

0

可以使用ng-bind而不是{{}},但我发现它更容易编写{{}},只是使用ng-cloak,因为它是专门为此目的而设计的。

只需添加NG-斗篷树足够高,所以你不必把它加入很多元素

变化

<td>{{1.99*subtotal.subtotal1}}</td> 

<td ng-bind="(1.99*subtotal.subtotal1)"></td> 
相关问题