Knockout.js “的价值是什么?”;这";在;点击";KnockoutJS中的处理程序?
考虑以下示例: HTML: 请澄清以下几点:Knockout.js “的价值是什么?”;这";在;点击";KnockoutJS中的处理程序?,knockout.js,Knockout.js,考虑以下示例: HTML: 请澄清以下几点: 为什么allDone中的this的值不是job?不是通过$parent调用全部完成吗作业是谁 是否有方法在单击时调用allDone,使此的值为作业 此和数据的值似乎相似,但并不完全相同: this->字符串{0:S',1:l',2:e',3:e',4:p',长度:5} 数据->睡眠 有什么区别 此在allDone功能的范围内运行,因此它不会引用作业allDone是通过$parent调用的,在本例中是作业,但这是在数据绑定语法中-这并不意味着Javas
allDone
中的this
的值不是job
?不是通过$parent
调用全部完成
吗作业是谁
allDone
,使此
的值为作业
此
和数据
的值似乎相似,但并不完全相同:
this->字符串{0:S',1:l',2:e',3:e',4:p',长度:5}
数据->睡眠
有什么区别此
在allDone
功能的范围内运行,因此它不会引用作业
allDone
是通过$parent
调用的,在本例中是作业
,但这是在数据绑定语法中-这并不意味着Javascript中的此
将引用作业
this
的值设置为另一个变量。通常的方法是使用var self=this
。然后,您可以通过子函数范围内的self
引用父对象(job
)。看
此
将简单字符串视为新对象(数据)
。
使用原始代码,
新对象(数据)
-->字符串{0:S',1:l',2:e',3:e',4:p',长度:5}
有关更多详细信息,请参阅。另一个可供参考的帖子是<div data-bind="with: job">
<div data-bind="foreach: tasks">
<div>
<span data-bind="text: $data"></span>
<span data-bind="click: $parent.allDone">(Done)</span>
</div>
</div>
</div>
ko.applyBindings(function() {
this.job = {
tasks: ['Buy milk', 'Sleep', 'Work', 'Praise'],
allDone: function(data) {
console.log(this);
console.log(data);
}
};
});
var job = function () {
var self = this;
this.tasks = ['Buy milk', 'Sleep', 'Work', 'Praise'];
this.allDone = function (data) {
console.log(self); // refers to the parent job now
console.log(data); // refers to the current item in the data-bound array
};
};
ko.applyBindings(new job());