我有以下示例代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<script type="text/javascript" src="../knockout-1.2.1.js"></script>
<script type="text/javascript" src="../knockout.mapping.js"></script>
</head>
<body>
<div>Nested Object Value1 <input data-bind="value: NestedObject.Value1" type="text" /></div>
<div>Value2 <input data-bind="value: Value2" type="text" /></div>
<hr/>
<div data-bind="text: ko.toJSON(viewModel)"></div>
<script type="text/javascript">
var initialData = {"NestedObject":{"Value1":"Dummy value"}, "Value2" : "Hello world"};
var viewModel = ko.mapping.fromJS(initialData);
viewModel.ParameterUpdatedDependentObservable = ko.dependentObservable(function() {
alert("dependentObservable fired");
}, viewModel);
ko.applyBindings(viewModel); // Makes Knockout get to work
</script>
</body>
</html>
我期望看到用户更改提醒值的弹出窗口。当我运行它时,弹出窗口仅在最初加载页面时显示一次。之后我可以进行价值更新,但不会长时间触发警报。
有什么线索?
答案 0 :(得分:3)
dependentObservables跟踪在评估期间访问其值以创建依赖项的可观察对象。
在您的情况下,您的dependentObsevable不会访问任何可观察对象。如果您在代码中访问一个或多个observable的值,那么只要其任何依赖项更新,您就会看到它被触发。