2013-09-28 28 views
1

假設我想在我的一個數據綁定中調用我的普通javascript函數。是否有可能這樣做? 我曾嘗試: -我可以在淘汰賽中調用viewmodel之外的函數嗎?

<span data-bind = "click : outsideFn() ">hi</span> 

<span data-bind=" click : function() { outsideFn() } ">hi</span? 

很顯然,我的嘗試是不成功的。

http://jsfiddle.net/RcxVj/

編輯: - 在標籤上添加的jsfiddle,因爲這似乎是一個的jsfiddle問題。

+1

你在jsfiddle之外試過這個嗎?我調整了一下,並讓它工作。它看起來像只是腳本加載問題。[jsfiddle](http://jsfiddle.net/RcxVj/3/) – bluetoft

+0

我只在jsfiddle嘗試,你是對的它確實工作。將我的JavaScript代碼放在body元素的末尾,並在頭部加載knockout庫,這樣做的竅門。謝謝。 – shriek

回答

9

是的,可以在數據綁定中調用普通的javascript函數。嘗試在你的項目中,它的工作。 jsfiddle腳本中可能存在一些問題。

+0

這是導致我的腳本失敗的原因。我試圖在jsfiddle而不是創建一個實際的文件。正如@bluetoft提到的,淘汰賽必須在身體內加載才能在jsfiddle中工作。感謝所有的幫助。 – shriek

1

是的,你可以。 請注意official Knockout documentationclick結合:

您可以參考任何JavaScript函數 - 它並不一定是您的視圖模型的功能。您可以通過編寫click來引用任何對象上的函數:someObject.someFunction。


工作例如:

http://jsbin.com/opamEzu/1/edit

HTML

<span data-bind="text: txt, click: outsideFn"></span>

的Javascript

var outsideFn = function() { 
    alert("outside function"); 
}; 

var vm = { 
    "txt": ko.observable("some text") 
}; 

ko.applyBindings(vm);