2012-07-05 71 views
0

我想將文本輸入值淘汰賽JS根據一些條件

<input type="text" id="2" data-bind="value : ??whatToWriteHere?? "> 

綁定到第二對象的name屬性在以下observable對象(可觀察到的對象物的內部結合的數組元素,其中input.id = = object.id)

myObject = { 
    myArray : [ { id:1, name:'one' },{ id:2, name:'two' },{ id:3, name:'three' } ] 
}, 
myObservableObject = ko.observable(myObject); 

用什麼表達式我應該替換?? whatToWriteHere ??

被修改:實際上該陣列被不necesserily是另一個對象

myArray : [ { id:1, name:'one' },{ id:2, name:'two' },{ id:3, name:'three' } ] 
myObservableArray = ko.observableArray(myArray); 

回答

2

我有一個解決方案基於ko.mapping plugin和爲您的目的創建的自定義綁定。

這裏你可以看到一個工作小提琴:

http://jsfiddle.net/ingro/MhdZp/

整個想法是映射您observableArray,然後檢索一個與您輸入的ID與映射插件的mappedIndexOf功能。

0

這取決於輸入的數據上下文是什麼內。如果myObservableArray中的對象綁定到模板化的輸入元素,則綁定將爲「value:name」。你在使用foreach嗎?或者在這裏只有一個輸入元素,你明確地想要綁定到第二個數組元素,其中myObservableArray剛剛在頁面中的某個地方聲明?如果是這樣,它將是「value:myObservableArray()[1] .name」。

+0

我有10個(這個數字可以動態改變,獨立於myArray)輸入元素,而myArray可能有0-10個項目(這個數字也是動態的)。我沒有使用foreach,即使我已經使用它也不依賴於我的數組。我想根據輸入元素id屬性和數組項id屬性將我的輸入元素與數組中的項匹配。 – nilgun

+0

服務器端是否生成輸入及其ID?如果是這樣,你不能使用任何視圖邏輯來生成id =「2」來將該2(減1獲取數組索引)插入到綁定中?例如。 「value:myObservableArray()[* 2 * - 1]其中* 2 *是使用你正在使用的任何服務器端視圖語法生成的,我能正確理解它嗎? –

+0

實際上情況是這樣的。 (例如10)中的汽車品牌,並且每個品牌的ID都與其匹配的品牌ID相同,並且我有一些擁有少量汽車的客戶(例如3),並且我試圖在這些輸入元素中寫入客戶的付款,所以ID是品牌ID。我使用Web服務來獲取數據並使用JQUery動態構建頁面。 – nilgun