简单的Knockout Viewmodel问题

时间:2014-11-11 15:18:31

标签: knockout.js

我有一个简单的淘汰视图模型问题,它驱使我绕圈... siteId属性第一次绑定,但不点击更新:

有人看到这有什么问题吗?

function NewSiteAccessViewModel() {
    var self = this;
    self.siteId = ko.observable();
}

$(document).ready(function () {
    var newSiteAccessViewModel = new NewSiteAccessViewModel();


    newSiteAccessViewModel.siteId = 'none yet';

    ko.applyBindings(newSiteAccessViewModel);

    $(".testClick").click(function() {
        newSiteAccessViewModel.siteId = "a new one";
        alert(newSiteAccessViewModel.siteId);
    });
});

HTML:

<h3 data-bind="text:siteId" ></h3>

因此我得到的结果将值更改为“none yet”,但随后不会在click上更新。警报显示新值......

2 个答案:

答案 0 :(得分:2)

通过调用observable函数设置observable的值。所以你写的地方:

newSiteAccessViewModel.siteId = 'none yet';

你想要

newSiteAccessViewModel.siteId('none yet');

,类似于点击处理程序。

答案 1 :(得分:2)

对于Knockout的视图模型绑定要更新,您必须做两件事:

  1. 必须使用ko.observable()
  2. 创建视图模型中的字段
  3. 必须通过调用字段来设置或更新字段,而不是直接设置字段。
  4. 所以在这种情况下:

      必须在视图模型中将{li> siteId创建为this.siteId = ko.observable();
    1. siteId必须初始化为newSiteAccessViewModel.siteId('none yet');
    2. siteId必须更新为newSiteAccessViewModel.siteId('a new one');