2013-10-25 76 views
0

我正在使用第三方視頻播放器來顯示視頻。這些視頻應根據用戶選擇進行播放,並且我應該能夠將視頻名稱傳遞到<object... param... videoPlaer... >

我需要將其與淘汰賽綁定。

這個簡單的JavaScript的工作(不剔除):

<script type="text/javascript"> 
var BCLS = (function() { 
    return { 
     onMovieStartFunc: function (evt) { 
      videoPlayer.loadVideo("some hard coded id"); 
      //I want to be able to change this id dynamically 
     } 
    } 
}()); 
</script> 
<object id="myObjectId"> 
    <param name="&#64;videoPlayer" value="videoPlayerValue"/> 
    <param name="templateLoadHandler" value="BCLS.onMovieStartFunc" /> 
</object> 

這不起作用:我怎樣才能綁定淘汰賽那些屬性?

的JavaScript:

<input type="button" data-bind='click: onMovieStartFunc' value="Start Video" /> 
<!-- /ko --> 

HTML:

<!-- ko with: $data --> 
    <object id="myObjectId"> 
     <param name="&#64;videoPlayer" value="videoPlayerValue"/> 
     <param name="templateLoadHandler" value="onMovieStartFunc" /> 
    </object> 

    <input type="button" data-bind='click: onMovieStartFunc' value="Start Video" /> 
<!-- /ko --> 

我創建了一個的jsfiddle,以確保我解釋正確

http://jsfiddle.net/acharyakrishna/ppZx5/2/

任何幫助將不勝感激。謝謝。

回答

2

您需要綁定這些參數。

由於您綁定了value屬性,因此可以使用value綁定。

<object id="myObjectId"> 
    <param name="&#64;videoPlayer" data-bind="value: videoPlayerValue"/> 
    <param name="templateLoadHandler" data-bind="value: onMovieStartFunc" /> 
</object> 

<input type="button" data-bind='click: onMovieStartFunc' value="Start Video" /> 

如果您需要綁定到其他屬性之外value,您可以使用attr結合來處理它們。

p.s.,<!-- ko with: $data -->是多餘的,不需要。無需進一步複雜化。

+0

我從來沒有使用過'object'元素,但我不確定應該調整'templateLoadHandler'參數中的參數。 –

+0

Uhhhaa! data-bind =「value:$ root.videoPlayerValue」爲我工作,現在我可以綁定這個值。非常感謝您的指導。 – Krishna

+0

templateLoadHandler是這個第三方視頻公司正在使用的事件處理程序,用於在頁面加載時啓動電影,因此用戶不必點擊「開始視頻」,想象YouTube,您不必點擊「現在玩「,它會自動啓動廣告,然後自動播放電影。像上面的數據綁定一樣指向事件處理程序也解決了這個問題。 這就是我所做的: 而且,對象成功調用事件處理程序並調用knockout viewmodel函數。 – Krishna

0

我並不完全確定你的問題是什麼,但是從在頁面加載中啓動電影的小提琴的評論 - 你必須自己做。淘汰賽不知道神奇地在你的虛擬機上調用一個函數。我要做的另一件事是確保您在document.ready激活後調用applyBindings

如果您有jQuery的可用

..

$(function() { 
    vm = new ObjectsViewModel(); 
    ko.applyBindings(vm); 
    vm.onMovieStartFunc() 
}); 
+0

已經被一些繁文縟節,執行該事件處理程序(這裏並不想冒犯任何人,只是我不明白怎麼會發生,這是一個第三方公司的組件),我只需要事件處理程序調用方法在視圖模型中,而不是在視圖模型之外。通過以下方式綁定它,它解決了這個問題:感謝您的輸入。 – Krishna

相關問題