私は knockoutjs を使用しており、次のようなオブジェクトがあります。
var home = function(){
this.title = 'Home',
this.vm = {
names: ko.observableArray(),
metadata: {
startDate: ko.observableArray()
}
}
};
home.prototype.create = function(){
alert('creating');
};
home.prototype.addNewPerson = function(){
alert(this);
this.create();
};
return home;
次に、HTML でwith
バインディングを使用します。
<div data-bind='with: vm.metadata'>
<input data-bind='value: startDate' />
<button data-bind='click: $parent.addNewPerson />
</div>
- これは私の正確なコードではなく、簡略化されたバージョンです
この状況でユーザーがボタンをクリックするthis
と、私のメタデータ オブジェクトになります。メタデータには create メソッドがないため、未定義のエラーが発生します。
バインディングを使用せずwith
、代わりに次のようにバインドする場合:
<input data-bind='value: vm.metdatadata().startDate'/>
次に、ユーザーがクリックすると、オブジェクト全体が取得され、呼び出すことができますthis.create();
- これは予想される動作ですか?
- そうである場合、with バインディングを使用しながら addNewPerson メソッドでメイン モジュールにアクセスするにはどうすればよいですか?