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/

任何帮助将不胜感激。谢谢。

4

2 回答 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绑定来处理它们。

ps,<!-- ko with: $data -->是多余的,不需要。没有必要让事情进一步复杂化。

于 2013-10-25T15:21:21.930 回答
0

我不完全确定你的问题是什么,但是从小提琴中关于在页面加载时开始电影的评论中 - 你必须自己做。Knockout 不知道在你的虚拟机上神奇地调用一个函数。我要做的另一件事是确保您applyBindings在 document.ready 触发后调用。

如果你有 jQuery 可用..

$(function() {
  vm = new ObjectsViewModel();
  ko.applyBindings(vm);
  vm.onMovieStartFunc()
});
于 2013-10-25T15:09:23.280 回答