我试图了解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>
由于
答案 0 :(得分:3)
答案 1 :(得分:1)
如果您不使用更改事件,它是否有效?
尝试手动订阅以查看效果:
product1.itemNumber.subscribe(function (newValue) {
console.log(newValue);
});