2012-01-18 91 views
8

我有兩個問題,請動態確定:分配值淘汰賽觀察到的由字符串名稱

我用敲除(我是小白KO SRY),我想一個值分配給特定的擊倒可觀察點擊事件,但應該只能確定點擊事件本身(和價值我會傳遞給數據綁定=點擊)...可以做到這一點,請...我可以得到基因敲除可觀察變量只是在它的名字(一個字符串值)上,而不必知道我將事先分配一個值的可觀察性?

其次,不太重要的是,如果存在這樣一個函數ko.ObservableByName(stringName),可以以某種方式使用它,並在頁面加載時分配預選多個選擇項。

我試圖做到這一點...我用數據綁定=「點擊:loadData.bind($的數據,‘參數1’,‘參數2’)」,然後我「M能夠在我的淘汰賽視圖模型構建一個事件處理程序來獲取那些參數1參數2字符串值沿行雲的東西:

self.loadData = function (src, dest) { 
    //dest is 'param1', src is 'param2', both are stings 
    if (src == 'param1') 
     self.p1observable($('#' + dest).val()); 
    else 
     self.p2observable($('#' + dest).val()); 
} 

我與這個最大的問題是,我必須構建已經指定了p1/p2可觀察對象的函數硬編碼,但我真的希望得到param1和param2作爲名稱或引用我的一些observables的名稱,然後我可以隨意傳遞(除了要分配的值,或更好還有另一個可觀察值,我想從第一個值複製值),因此我可以將點擊函數調用中的值直接分配給我選擇的可觀察值(並且不具有大量這樣的小函數) ...

也許我會以錯誤的方式去做?也許我不應該傳遞字符串值......也許我應該嘗試傳遞一個可觀察對象,但是如何在數據綁定內部做到這一點,是否只寫myViewModel.myObservable或類似的東西?

+0

你能舉一個你到目前爲止的例子嗎? – ericb 2012-01-18 04:46:57

回答

15

如果你有你的父對象,那麼你可以通過使用此語法訪問可觀察到的:

viewModel[observableName]

,並設置類似的值:

viewModel[observableName](newValue)

這裏是一個樣本您可以從下拉列表中選擇屬性名稱,然後相應地設置該值,並將另一個按鈕直接綁定到設置可觀察值/值的位置:http://jsfiddle.net/rniemeyer/CTnUQ/

+0

這幾乎就是我所需要的,所以非常感謝......只是一個旁註,如果在viewModel中,使用這個[observableName]符號......但是我猜如果你從外部使用它viewModel結構,我不知道,如果例如我有許多不同的頁面,每個頁面將加載一個外部viewModel腳本,這是否會工作,然後許多頁面會使用相同的數據實例或每個頁面它自己的副本viewModel從外部.js文件加載? _我很快就會嘗試,我被JQMobile卡住了,它在WP7_上的無法解決的changePage錯誤 – dada 2012-01-19 13:23:07