【问题标题】:ObservableArray Knockout doesn't update the viewObservableArray Knockout 不更新视图
【发布时间】:2016-02-19 01:49:48
【问题描述】:

我正在使用 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

有人可以帮忙吗?

最好的问候,

【问题讨论】:

  • 我会添加这条你永远不知道它可能会有所帮助的评论。我在页面上有一个下拉列表或者我可以选择数据显示模式,如果我改变模式(不刷新页面),我可以在 UI 中看到数据
  • 不,抱歉,我不明白您的问题是什么?
  • 这里有一个小视频来解释到底发生了什么:expirebox.com/download/a02facfbeba73fb250ed282baab12482.html
  • openRank 是可观察的吗?
  • 不,这只是 viewModel 中的一个简单属性。

标签: knockout.js


【解决方案1】:

如果openRankobservable,试试这个:

<span data-bind="text: $parent.complements()[openRank()]"></span>

如果不是,请将其更改为observable,因为淘汰赛需要知道发生了更改才能更新视图。

查看sn-p:

var viewModel = function(){
  this.pos = ko.observable(0);
    this.list = ko.observableArray(["item 1","item 2"]);
}

ko.applyBindings(new viewModel())
<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>

【讨论】:

  • 这里是代码: for (var i = 0; i
  • @kbourzayq 改为:for (var i = 0; i &lt; this.basketColumns.length; i++) { var column = this.basketColumns[i]; if (column.contentType == 'open') { column.openRank(n++); } }
  • 我在我的初始代码中这样做了 :( 但它也不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-27
  • 2016-06-27
  • 2013-07-25
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
相关资源
最近更新 更多