我正在使用 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
将是我的元数据对象。所以我会得到一个未定义的错误,因为元数据没有创建方法。
如果我不使用with
绑定而是像这样绑定:
<input data-bind='value: vm.metdatadata().startDate'/>
然后当用户点击时,我得到了我的整个对象,我可以调用this.create();
- 这是预期的行为吗?
- 如果是,我如何在 addNewPerson 方法中访问我的主模块,同时仍然使用 with 绑定?