我是KnockoutJS的新手,並認爲它是迄今爲止一款出色的工具:)!不過,我有一個關於計算可觀測量的問題,如下所示。在KnockoutJS頁面http://knockoutjs.com/documentation/computedObservables.html處,有一個格式化價格的示例代碼。代碼如下。KnockoutJS強制計算Observable重新計算
HTML
<p>Enter bid price: <input data-bind="value: formattedPrice"/></p>
而且JS:
JS
function MyViewModel() {
this.price = ko.observable(25.99);
this.formattedPrice = ko.computed({
read: function() {
return '$' + this.price().toFixed(2);
},
write: function (value) {
// Strip out unwanted characters, parse as float, then write the raw data back to the underlying "price" observable
value = parseFloat(value.replace(/[^\.\d]/g, ""));
this.price(isNaN(value) ? 0 : value); // Write to underlying storage
},
owner: this
});
}
ko.applyBindings(new MyViewModel());
我也複製代碼,並在這裏放的jsfiddle:http://jsfiddle.net/wDvxw/
我的問題是,該值不更新自己,當你進入同樣的事情兩次。例如:
第1步:輸入25.1234,它變爲$ 25.12 第2步:再次輸入25.1234。現在沒有反應。
我的猜測是該值沒有改變,因此它沒有重新格式化。我可以知道如何解決這個問題嗎?
謝謝!
非常感謝!我曾看過這個,但沒有意識到這是答案,哈哈。 – Wysie
還有一個問題,當我嘗試以這種方式使用計算的observables時,我發現它通常會導致我的字段在我編輯它時自動更新。因此我需要使用hasFocus,然後使用簡單的檢查。但是,在上面的示例代碼中,我發現在編輯它時,字段本身永遠不會更新。這是爲什麼?我認爲這是業主領域,但似乎並非如此......謝謝! – Wysie
我並不真正關注你的問題。這是如何使焦點來到圖片?你可以創建一個新的小提琴來展示你現在面臨的問題嗎? – nemesv