knockoutjs:使用索引号中具有特定Observable Array对象的模板绑定

时间:2014-06-06 01:47:05

标签: javascript arrays knockout.js

我正在尝试将视图模型中定义的ObservableArray中的特定对象传递给带索引号的模板。

在我看来,它看起来像这样:

<!-- ko template: { name: "fooTemplate", with: FooCycles()[0] } --><!-- /ko -->

<script id="fooTemplate" type="text/html">
  //some HTML for a individual FooCycle here
</script>

我收到Uncaught ReferenceError: Unable to process binding "template: function (){return { name:"fooTemplate",with:FooCycles()[0]} }"错误。在with binding下,它仍然将它所属的父VM集中在我的JS调试器(Chrome)中。

我可以访问模型定义中用于多个ko.computed属性的特定数组对象:

var fstsum = parseFloat(self.FooCycles()[0].sum());
var sndsum = parseFloat(self.FooCycles()[1].sum());

我可以在FooCycles中使用foreach毫无问题:

<!-- ko foreach: FooCycles -->
  <div class="item">
    <!-- ko template: { name: "fooTemplate", with: $data } --><!-- /ko -->
  </div>
<!-- /ko -->

FooCycles()[0]适用于javascript,但不适用于Knockout.js。有没有办法在Knockout中获取带索引的数组对象?

1 个答案:

答案 0 :(得分:1)

Template binding未在受支持的&#34;附加&#34;下列出with文档中提供的参数。

foreach合作的原因是:

  

data - 要作为要呈现的模板的数据提供的对象。 如果省略此参数,KO将查找foreach参数,或者将使用当前模型对象。

with更改为data,如果是foreach,您可以省略它。