2013-03-06 40 views
0

我正在使用knockout.js,因爲我們都是javascript,所以對它來說相當新穎。關於knockout.js可見綁定和javascript函數

所以這是我的問題。我有一個單選按鈕,單擊時必須顯示一個div塊。

這裏的單選按鈕的代碼:

<label class="radio inline"> 
        <input type="radio" class="advanced" name="chooseMe" value="chooseMe" data-bind="checked: qrType" /> 
        ChooseMe 
</label> 

這裏的DIV:

<div class = "salaryBlock" data-bind="visible: qrType() == 'chooseMe'"><input type="text" id="" placeholder="Salary" /></div> 

我應包含JavaScript方法單獨視圖模型文件。

這裏的方法: $(function() { var rbViewModel = { qrType: ko.observable('plaintext') }; ko.applyBindings(rbViewModel); });

* 我有兩個問題:* 1)如何配合這個功能與類名的div標籤?我不知道如何編寫代碼。應該是$(.salaryBlock).function(){ var rbViewModel = { qrType: ko.observable('plaintext') }; ko.applyBindings(rbViewModel); }); `

2)我的代碼在html中的綁定是否正確?請告訴我。

我會很感激你的幫助球員。

+3

你的代碼似乎很好,你能澄清你想要做什麼嗎?工作jsfiddle:http://jsfiddle.net/fx6Gn/1/ – 7zark7 2013-03-06 03:24:24

+0

@Boss,這是一個很好的問題。說實話,那就是我卡在哪裏。我希望div標籤在您選擇收音機時顯示,並在您播放時隱藏。我不知道該怎麼寫。 – Stranger 2013-03-06 03:30:44

+0

@ 7zark,我有一個單獨的JavaScript文件。這意味着,我必須將我的JavaScript代碼與div標籤綁定,以便單擊單選按鈕時會顯示div標籤,並在它被分解時隱藏。因此,沿$(。salaryBlock)行... – Stranger 2013-03-06 03:32:12

回答

1

這裏是一個小提琴 - http://jsfiddle.net/kyQcF/1/

你不需要使用$function視圖模型綁定。

另外,你可以做什麼@ 7zark7的小提琴。基本上,你需要確保當你的js文件加載時,viewmodel被初始化,並且ko.applybindings被該視圖模型調用。

+0

,謝謝你的幫助。當你說「確保視圖模型已初始化」時,你是什麼意思? – Stranger 2013-03-06 03:45:54

+1

@Stranger,我的意思是,因爲您通過外部JavaScript文件加載視圖模型,所以在視圖中包含文件應確保視圖能夠看到視圖模型。只有這樣,數據綁定纔會發生,而不必觸發另一個事件。 – 2013-03-06 04:27:57