在数据绑定中动态设置绑定

时间:2012-12-18 11:47:17

标签: javascript knockout.js

在knockout.js中,我们有一个基本的例子,其中包含最基本的文本绑定:

Today's message is: <span data-bind="text: myMessage"></span>

<script type="text/javascript">
    var viewModel = {
        myMessage: ko.observable() // Initially blank
    };
    viewModel.myMessage("Hello, world!"); // Text appears
</script>

直接来自教程http://knockoutjs.com/documentation/text-binding.html 如果我想要一个定义实际绑定属性的变量,该怎么办?这可能看起来像这样:

Today's message is: <span data-bind="myBinding: myMessage"></span>

<script type="text/javascript">
    var viewModel = {
        myMessage: ko.observable(), // Initially blank
        myBinding: ko.observable(), // Initially blank
    };
    viewModel.myMessage("text");
    viewModel.myMessage("Hello, world!"); // Text appears
</script>

以上代码显然是错误的,但正确的情况是什么?

我正在研究像ko.applyBindingsToNode(Can I dynamically bind element inside custom binding?)这样的东西,但这次Google FU完全让我失望了,因为我发现的大部分内容都是将绑定应用于动态构建的元素而不是动态绑定动态类型。

1 个答案:

答案 0 :(得分:1)

您不能将observable用作自定义绑定类型。 Observable用于存储数据。

您可以使用Custom BindingComputed Observables获得所需的功能。就个人而言,如果这是您需要一次的特殊事物,那么请使用Computed Observable。否则,请使用自定义绑定。