【问题标题】:Simple Method to refresh Viewmodel with KnockoutJS using anchor tag使用锚标记使用 KnockoutJS 刷新 Viewmodel 的简单方法
【发布时间】:2013-09-07 21:36:04
【问题描述】:

我有一个简单的视图模型,它有一个 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。如果您想读取当前值,请不要传递任何参数。

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

【问题讨论】:

  • MyDataViewModel.Refresh 应该是一个函数,而不是一个计算:'MyDataViewModel.Refresh = function () { var self = MyDataViewModel; //AJAX 在这里调用 };'
  • @nemesv Post as answer :) 你坐的是绅士和学者

标签: javascript jquery mvvm knockout.js


【解决方案1】:

click binding 需要一个在你点击时执行的函数,所以你不需要ko.computed 这里只需要一个function

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

当您想从现有的可观察属性计算新值时,您只需要使用ko.computed。来自计算出的 observable documentation

如果你有一个用于 firstName 的 observable,另一个用于 lastName,并且要显示全名?那是计算的地方 observables 进来——这些函数依赖于一个或 更多其他 observables,并且会在任何时候自动更新 这些依赖项发生了变化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 2013-06-21
    • 2020-08-09
    • 2017-12-24
    • 2012-01-13
    • 1970-01-01
    • 2014-09-26
    相关资源
    最近更新 更多