我正在使用knockout和breeze,現在正在SELECT HTML標籤上工作。將輸入SELECT標籤外部的(敲除)foreach移開給我帶來麻煩問題
下面是實際執行:
<select data-bind="value: vehicleId, foreach: $root.vehicles()">
<option data-bind="text: registration(), value: id()"></option>
</select>
在運行時,它看起來像這樣:
出於測試目的,我重構這個代碼。所以我將foreach
移開SELECT。
這裏是新的實現:
<select data-bind="value: vehicleId">
<!-- ko foreach: $root.vehicles() -->
<option data-bind="text: registration(), value: id()"></option>
<!-- /ko -->
</select>
當我測試頁面,我注意到,與第二實施預期的微風沒有工作。當我更新數據時(在任何輸入中),微風不再檢測到我的更新。通常,當我更新我的頁面上的內容時,我有datacontext.hasChanges()
這是真的。然後我顯示按鈕,如Save
,Cancel
。現在情況並非如此。如果我回到原始實施,它再次運作。我很奇怪。
有什麼想法?
謝謝。
編輯
我也看看這個:knockout.js: using a containerless foreach on a <select> fails in Internet Explorer 8
,但它似乎並不工作之一。
好奇。如果第一次實施有效,爲什麼需要改變?我會假設選擇標籤引發更改事件。從技術上講,只有在選擇標籤的情況下,您的選項值纔會改變。另外,您的「註冊」和「身份證」不需要是KO可觀察對象,是嗎? KO可以做單向綁定,並非所有事情都是可觀察的。 – mikekidder
需要改變測試目的並理解'爲什麼'和'如何'。我的所有元素都是可觀察的,因爲在這之後是來自微風的查詢... – Bronzato
你有什麼變化,沒有更新?某些外部數據綁定對象的'vehicleId'?很難說,沒有更多的信息 – Ward