【问题标题】:KnockoutJS - Update observable value after applybindingsKnockoutJS - 在应用绑定后更新可观察值
【发布时间】:2013-07-16 19:46:51
【问题描述】:

创建视图模型后,我需要更新一个可观察值。此外,我需要直接更新值,以响应来自 javascript 控件的事件,而无需将对象绑定到该 observable。我认为这应该很容易,而且我只是以某种方式错过了正确的语法,但我就是不明白。

我创建了一个 JSFiddle 来说明我想要做什么。 http://jsfiddle.net/toddhd/vwhqU/1/

如果您在运行 JSFiddle 时按 F12 并观察控制台,您将看到错误被捕获。

AppViewModel.firstName('Todd');

尝试以这种方式更新名字告诉我 AppViewModel 没有名为“firstName”的函数。

AppViewModel().firstName('Todd');

这种方式告诉我 firstName 是未定义的。

可能我必须再次调用 Apply Bindings,但我并不想仅仅为了更新单个值而这样做。

我错过了什么?

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    你需要更新对象的实例,而不是类的定义。

    var avm = new AppViewModel();
    ko.applyBindings(avm);
    avm.firstName('Todd');
    

    http://jsfiddle.net/paulprogrammer/vwhqU/2/

    【讨论】:

      【解决方案2】:

      您需要将视图模型保存在一个变量中并使用该变量来更改名字。 我已经更新了你的 jsfiddle:http://jsfiddle.net/vwhqU/3/

      var vm = new AppViewModel();
      ko.applyBindings(vm);
      
      //I need to update first name directly later on, without a binding, in response to an event
      vm.firstName('Todd');
      

      【讨论】:

        猜你喜欢
        • 2012-11-02
        • 2017-11-25
        • 1970-01-01
        • 2012-07-16
        • 1970-01-01
        • 2013-12-16
        • 1970-01-01
        • 1970-01-01
        • 2014-12-24
        相关资源
        最近更新 更多