1
请看看下面的代码:是否有可能在淘汰赛忽略“数据绑定=用......”
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form data-bind="with: selectedMerchant">
<h1 data-bind="text: name"></h1>
<button data-bind="click: show"> SHOW </button>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-debug.js" type="text/javascript"></script>
<script>
function PartnersViewModel() {
self.selectedMerchant = ko.observable({'name': 'John'});
self.show = function() {
alert(JSON.stringify(self.selectedMerchant()));
}
}
ko.applyBindings(new PartnersViewModel());
</script>
</body>
</html>
正如你可以看到,该行:
<form data-bind="with: selectedMerchant">
使对象selectedMerchant'形式的结合上下文这就是为什么“的内部h1'标签,我们将看到名为‘约翰’
然而,该行:。
<button data-bind="click: show"> SHOW </button>
说(据我所知),一旦按钮被点击,方法“显示”里面对象'selectedMerchant'将被调用。当然这个方法在selectedMerchant中不存在,所以我期望看到一个错误。
令我惊讶的是,它工作正常,我得到一个弹出窗口说:
{'name': 'John'}
我不明白为什么knockout.js调用它是对象“selectedMerchant”之外的方法。有没有人有一个很好的解释?