我正試圖在JavaScript ViewModel中實現輸入字段和字段之間的雙向綁定。綁定已經被聲明性地連接起來。不幸的是我在UI中做的改變並沒有反映在我的ViewModel中。Windows 8 HTML/JavaScript Metro應用程序中的雙向綁定
我的代碼看起來像這樣(寫出來我的頭,因爲我沒有在這裏的代碼)
查看:
<form data-win-bind="onsubmit: onCalculate">
<div class="field">
Product Name:
<input type ="number" data-win-bind="text:value1"/>
</div>
<div class="field">
Product Price:
<input type ="number" data-win-bind="text:value2"/>
</div>
<div class="field">
Result
<br />
<span data-win-bind="innerText: result" />
</div>
</form>
的JavaScript
var model= WinJS.Class.define(
function() {
this.onCalculate = calculate.bind(this);
this.value1 = 0;
this.value2 = 0;
this.result = 0;
},{
value1: 0,
value2: 0,
result: 0
calculate: function() {
this.result = this.value1 + this.value2;
return false;
}
}, {});
// Make the model Observable
var viewModel = WinJS.Binding.as(new model());
WinJS.Binding.processAll(null, viewModel);
當我應用綁定時,ui顯示我的初始值。表單子命令與計算功能正確連接。但是value1和value2的值不會隨用戶輸入而更新。
我試圖實現的是讓我的JavaScript不知道底層視圖。所以我不想爲JavaScript中的html輸入字段連接更改事件。
有沒有什麼辦法可以用純WinJS來實現這個?到目前爲止,我發現的所有示例都只進行單向綁定,並使用事件偵聽器來更新ViewModel,並使用UI進行更改。
感謝澄清!如果我將實現該功能,我一定會分享它;-) –
我在我的博客上有一個這樣的例子:http://www.skimedic.com/blog/post/2013/02/22/MVVM-在-WinJS-部分-3-e28093-綁定初始化器和 - 雙向-Binding.aspx – Skimedic