什么时候调用dependentObservable的函数?

时间:2011-08-29 17:31:05

标签: knockout.js

我有以下示例代码:

<!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>

我期望看到用户更改提醒值的弹出窗口。当我运行它时,弹出窗口仅在最初加载页面时显示一次。之后我可以进行价值更新,但不会长时间触发警报。

有什么线索?

1 个答案:

答案 0 :(得分:3)

dependentObservables跟踪在评估期间访问其值以创建依赖项的可观察对象。

在您的情况下,您的dependentObsevable不会访问任何可观察对象。如果您在代码中访问一个或多个observable的值,那么只要其任何依赖项更新,您就会看到它被触发。