Knockout - 当绑定值改变时,元素会触发什么?

时间:2012-02-13 20:52:09

标签: knockout.js

我试图了解Knockout在页面上的元素由于applyBinding更新其中的值时对其做了什么。

考虑这个简单的例子:

<!DOCTYPE html>
<html>
<head>

    <title>Example</title>
        <script src="../lib/jquery-1.7.1.min.js"></script>
    <script src="../lib/knockout-2.0.0.js"></script>

    <script>
        $(function () {
            $("#itemNumber").change(function() {
                console.log('itemNumber');
            });

            //create The view Model
            var product1 = {
                  id: 1002,
                  itemNumber: "T110",
                  model: "Taylor 110",
                  salePrice: 699.75
                }; 
            ko.applyBindings(product1);
        });
    </script>
</head>
<body >
    <input data-bind="value: itemNumber" type="text"  id="itemNumber" />
</body>
</html>

当我运行页面时,T110出现在我的输入框中,当我更改值时,控制台消息显示为我期望的。

但请注意,在页面加载期间调用applyBindings时它不会触发,因为我期望......

那么它用什么机制来修改输入元素的值?而我真正想要的是在元素本身中检测这个的一些方法,因为这是一个控件,我想将隐藏字段中的实际值复制到正确的位置,但保持任何值粘在它上面...... < / p>

由于

2 个答案:

答案 0 :(得分:3)

您可以自己查看,阅读{{3>}了解值绑定

处理更改的默认事件是更改事件,但那是source

另外,学习KnockoutJs的好方法是通过configurable

答案 1 :(得分:1)

如果您不使用更改事件,它是否有效?

尝试手动订阅以查看效果:

product1.itemNumber.subscribe(function (newValue) {
    console.log(newValue);
});