0

Knockout JSを使用して次の問題を解決しようとしています

  • 子ビュー モデルへの「送信」バインディングを介して HTML フォームをバインドする必要がある
  • 「submit」にバインドされたコールバック メソッドは継承されたメソッドです

次のコードは、上記のシナリオをより適切に説明します。同じことがこのフィドルにあります。

function MasterViewModel() {
    var self = this;
    self.employeeViewModel = new EmployeeViewModel();
};

function EmployeeViewModel () {
    var self = this;
    self.empFirstName = ko.observable();
    self.empLastName = ko.observable();
    self.employeeList = ko.observableArray([]);
};

EmployeeViewModel.prototype.addEmployee = function () {
    var self = this;
    self.employeeList.push(new Employee(self.empFirstName(), self.empLastName()));
}

function Employee(firstNameParam, lastNameParam) {
    var self = this;
    self.firstName = ko.observable(firstNameParam);
    self.lastName = ko.observable(lastNameParam);
}

ko.applyBindings(new MasterViewModel());

HTML では、次のように送信バインディングを使用します。

<form data-bind="submit: employeeViewModel.addEmployee">
</form>

私は常に、コールバック メソッドに渡される「this」コンテキストが「MasterViewModel」のインスタンスであることを観察しました。「送信」バインディングで別のコンテキストを渡す方法を探しましたが、無駄でした。

これは私が悪用しようとしている制限ですか、回避策はありますか?

ありがとう。

4

1 に答える 1

0
 <script type="text/javascript">
       var viewModel = {       
           numberOfClicks : ko.observable(0),       
           incrementClickCounter : function() {  
                 var previousCount = this.numberOfClicks(); 
                 this.numberOfClicks(previousCount + 1);    
            }  
       }; 
   </script>

http://knockoutjs.com/documentation/click-binding.html ノックアウトのドキュメントによると、スクリプトでインクリメント クリック カウンター関数をまだ定義していない場合は、ここで「this」の値を制御できます。

于 2013-03-18T11:33:12.303 に答える