【问题标题】:Binding namespaced view models in knockout.js在 knockout.js 中绑定命名空间视图模型
【发布时间】:2014-02-24 11:15:22
【问题描述】:

我正在尝试通过使用命名空间来为我的淘汰代码提供一些结构:

var Namespace = Namespace || {};

Namespace.ViewModel = function(){
  self = this;
  self.test = function() {
    console.log('test');
  }
};

Namespace.Start = function(){
  var viewModel = Namespace.ViewModel();
  ko.applyBindings(viewModel);
  return viewModel;
};

问题在于,要将其绑定到视图,我必须使用 <li data-bind="click: Namespace.test"></li> 之类的命名空间,这是预期的行为还是我只能使用 data-bind="click: test",或者可能有更好的方法来执行此操作而不使用类似require.js?

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

    您遇到的问题有不同的原因。你的Namespace.ViewModelconstructor function,应该这样称呼:

    var viewModel = new Namespace.ViewModel();
    

    注意new 关键字。

    你可以看到它在this jsfiddle 中工作。它允许你只写:

    <button data-bind="click: test">Test Me</button>
    

    【讨论】:

      【解决方案2】:

      这不是问题。但是你应该写var viewModel = new Namespace.ViewModel();(和new)并且没有理由return viewModel;。看到这个Fiddle

      【讨论】:

        猜你喜欢
        • 2015-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-03
        • 1970-01-01
        • 2012-09-10
        • 2012-04-18
        • 2011-08-16
        相关资源
        最近更新 更多