2017-07-29 75 views
0

我知道$ data變量提供了對您的上下文所在的當前對象的訪問。 也可以使用foreach綁定並將屬性名稱添加到books對象。


此代碼迭代名爲和結果陣列上顯示在DOM的產品清單。

但是,爲什麼如果我從書籍更改該數組名稱到任何其他名稱,它不會顯示項目。

<!DOCTYPE html> 
<html> 
<head> 
    <title>Data Binding with KnockoutJS</title> 
</head> 
<body> 

    <ul > 
    <!-- ko foreach: books --> 
     <li data-bind="text: $data"></li> 
    <!-- /ko --> 
    </ul> 

    <script type='text/javascript' src='knockout-3.4.2.js'></script> 
    <script> 
     var ViewModel = function() { 
      var self = this; 

      self.books = [ 
       'Journy to the earth', 
       'effective study plans' 

      ]; 
     }; 
     var myModel = new ViewModel(); 
     ko.applyBindings(myModel); 
    </script> 
</body> 
</html> 

這裏是改變陣列名稱到標題和原因的錯誤後的代碼。

<!DOCTYPE html> 
<html> 
<head> 
    <title>Data Binding with KnockoutJS</title> 
</head> 
<body> 

    <ul > 
     <li data-bind="text: $data"></li> 
    </ul> 

    <script type='text/javascript' src='knockout-3.4.2.js'></script> 
    <script> 
     var ViewModel = function() { 
      var self = this; 

      self.titles= [ 
       'Journy to the earth', 
       'effective study plans' 

      ]; 
     }; 
     ko.applyBindings(ViewModel); 
    </script> 
</body> 
</html> 
+0

請顯示不起作用的代碼。 – Salketer

+0

@Salketer增加了它 – Elhaw

回答

1

的問題是,你改變變量名時省略的foreach部分:

<ul > 
<!-- ko foreach: books --> 
    <li data-bind="text: $data"></li> 
<!-- /ko --> 
</ul> 

您改爲

<ul > 
    <li data-bind="text: $data"></li> 
</ul> 

但應該改爲

<ul > 
<!-- ko foreach: titles --> 
    <li data-bind="text: $data"></li> 
<!-- /ko --> 
</ul> 

請注意,我是修改foreach指令以使用新的變量名稱。

+0

謝謝@salketer。我認爲這只是評論,並沒有影響代碼執行。 – Elhaw

+0

THey確實是「正義」的html評論,但它們被knockout使用。 – Salketer

+0

在哪裏可以找到這些評論如何被淘汰賽操縱? – Elhaw