【发布时间】:2015-11-08 04:34:18
【问题描述】:
如何在淘汰赛中将当前对象从模板传递给函数。这是代码:
<div data-bind="foreach: people">
<p>
<b data-bind="click: $root.check, text : name"></b>
</p>
</div>
<div data-bind="template: 'peopleList'"></div>
<script type="text/html" id="peopleList">
{{each people}}
<p>
<b data-bind="click: $root.check">${name}</b> is ${age} years old
</p>
{{/each}}
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="jquery.tmpl.min.js"></script>
<script src="knock.js"></script>
<script>
var viewModel = function() {
this.people = ko.observableArray([
{ name: 'Rod', age: 123 },
{ name: 'Jane', age: 125 },
]);
this.check = function (val) {
console.log('current value', val);
}
}
ko.applyBindings(new viewModel());
</script>
如果我从模板点击外部,检查按预期工作,它会打印当前对象,但如果我点击模板内部,检查会打印 viewmodel 对象。为什么? click : $root.check 在第一种情况下打印 e.x Object {name: "Jane", age: 125} ,在第二种情况下在模板内打印 viewModel {}
【问题讨论】:
标签: knockout.js