使用锚标记使用KnockoutJS刷新Viewmodel的简单方法

时间:2013-09-04 11:38:32

标签: javascript jquery mvvm knockout.js

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

我的ViewModel:

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。如果您希望读取当前值,请不要传递任何参数。

非常感谢任何建议协助。

1 个答案:

答案 0 :(得分:1)

click binding需要一个在您点击时执行的功能,因此您不需要ko.computed只需function

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

如果要从现有的可观察属性计算新值,则只需使用ko.computed。从计算的可观察documentation

  

如果你有firstName的可观察量,而另一个有   lastName,你想显示全名吗?这是计算的地方   观察者进来 - 这些是依赖于一个或多个的功能   更多其他可观察者,并将随时自动更新   这些依赖关系发生了变化。

相关问题