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」之外的方法。有沒有人有一個很好的解釋?