【问题标题】:Knockoutjs - subscribe with mapping pluginKnockoutjs - 使用映射插件订阅
【发布时间】:2012-08-12 07:53:47
【问题描述】:

我正在使用淘汰映射插件,以前我会这样设置订阅

self.selectedProduct.subscribe(function (name) {

}
  but I'm unsure of how to do this in this format below. The message I get is

“缺少:属性 ID 之后”

 var viewModel = {

    products: ko.mapping.fromJS([]),
    productOptions: ko.mapping.fromJS([]),
    productOptions.subscribe = function (name) {
        alert('somthing change');
    },
    loadInitialData: function () {
        ko.mapping.fromJS(serverData, viewModel.productOptions);
    }
  }

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    如果您将视图模型定义为对象字面量,则不能像内联那样进行函数调用。您必须在创建视图模型后执行此操作,或者以不同的方式创建视图模型。

    如果你后来这样做,那么它看起来像:

      var viewModel = {
        products: ko.mapping.fromJS([]),
        productOptions: ko.mapping.fromJS([]),
        loadInitialData: function () {
            ko.mapping.fromJS(serverData, viewModel.productOptions);
        }
      };
    
       viewModel.productOptions.subscribe = function (name) {
            alert('somthing change');
       };
    

    如果您使用构造函数创建视图模型,那么它看起来像:

    var ViewModel = function() {
        this.products = ko.mapping.fromJS([]);
        this.productOptions = ko.mapping.fromJS([]);
        this.productOptions.subscribe = function(name) {
             alert("something change");
        };
    
        this.loadInitialData = function() {
            ko.mapping.fromJS(serverData, this.productOptions);
        };
    };
    
    
    var viewModel = new ViewModel();
    

    【讨论】:

      猜你喜欢
      • 2012-03-06
      • 2015-07-04
      • 2012-08-29
      • 1970-01-01
      • 2012-07-31
      • 2013-07-02
      • 2012-06-22
      • 2012-04-30
      • 2011-06-12
      相关资源
      最近更新 更多