4

私はノックアウトマッピングプラグインを使用していますが、以前はそのようにサブスクライブを設定していました

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);
    }
  }
4

1 に答える 1

6

ビューモデルをオブジェクトリテラルとして定義している場合、インラインで行っているように関数呼び出しを行うことはできません。ビューモデルが作成された後にそれを行うか、別の方法でビューモデルを作成する必要があります。

後でそれを行うと、次のようになります。

  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-08-16T02:21:31.617 に答える