1

我有一个简单的视图模型,它有一个 ko.computed 方法。这个 ko.computed 方法中有多个 ajax 调用。我只想从锚标记调用 ko.computed 方法来刷新我的数据集。

我的视图模型:

var MyDataViewModel = {
     Date: ko.observable(FormatDate()),
     Receiving: ko.observableArray(),
     Triage: ko.observableArray(),
     Technician: ko.observableArray(),
     Scrap: ko.observableArray(),
     Refurb: ko.observableArray(),
     CA: ko.observableArray(),
     Dispatch: ko.observableArray()
}

MyDataViewModel.Refresh = ko.computed(function () {
   var self = MyDataViewModel;
       //AJAX CALLS HERE
    });

我的锚标签:

<a href="#Refresh" data-bind="click: Refresh" ><i class="icon-refresh"></i></a>

当我单击锚标记时,我收到以下消息:

未捕获的错误:除非您指定“写入”选项,否则无法将值写入 ko.computed。如果您想读取当前值,请不要传递任何参数。

任何建议的帮助将不胜感激。

4

1 回答 1

1

click绑定需要一个在您单击时执行的函数,因此您不需要 ako.computed这里只是 a function

MyDataViewModel.Refresh = function () {
        var self = MyDataViewModel;
         //AJAX CALLS HERE
};

ko.computed仅当您想从现有的可观察属性计算新值时才需要使用。从计算的可观察文档中:

如果你有一个用于 firstName 的 observable 和另一个用于 lastName 的 observable,并且你想显示全名怎么办?这就是计算出的 observables 的用武之地——这些函数依赖于一个或多个其他 observables,并且会在这些依赖项中的任何一个发生变化时自动更新。

于 2013-09-04T11:47:55.057 回答