我正在使用knockoutJs,我遇到了observableArray的问题。
这是代码:
var productOid = this.product._oid;
for (var oid in this.basket.dataProvider.persistentBasketItems) {
var item = this.basket.dataProvider.persistentBasketItems[oid];
var reference = this.basket.dataProvider.references[item.referenceOid];
if (!reference) continue;
if (reference.productOid == productOid) {
for (var i = 0; i < item.productComplements.length; i++) {
complements.push(item.productComplements[i]);
}
break;
}
}
this.complements = ko.observableArray(complements);
var grid = this.grid();
if (grid)
grid.updateComplements();
这是html代码:
<span data-bind="text: $parent.complements[openRank]"></span>
openRank属性是在视图上绑定的视图模型上定义的。
正如您在下面的screenShot中看到的那样,数据存在于数组中。
任何人都可以提供帮助吗?
致以最诚挚的问候,
答案 0 :(得分:2)
如果openRank
是observable
,请尝试:
<span data-bind="text: $parent.complements()[openRank()]"></span>
如果没有,请将其更改为observable
,因为淘汰赛需要知道发生了更改以更新视图。
请参阅代码段:
var viewModel = function(){
this.pos = ko.observable(0);
this.list = ko.observableArray(["item 1","item 2"]);
}
ko.applyBindings(new viewModel())
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<input type="number" data-bind="value: pos">
<span data-bind="text: list()[pos()]"></span>
&#13;