Durandal并没有打开可观察对象



我正在将我的knockout项目升级到durandal,并注意到一些标准的knockout绑定不像预期的那样工作。

Knockout与

之间没有任何区别:
<!-- ko text: someObservable" --><!-- /ko -->

:

<!-- ko text: someObservable()" --><!-- /ko -->

Durandal的组合引擎似乎不能正确处理第一种情况(没有括号)。我最终用dependentObservable函数的字符串表示而不是它的值:

function dependentObservable() {          if (arguments.length > 0) {              if (typeof writeFunction === "function") {                  // Writing a value                  writeFunction.apply(evaluatorFunctionTarget, arguments);              } else {                  throw new Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");              }              return this; // Permits chained assignments          } else {              // Reading the value              if (!_hasBeenEvaluated)                  evaluateImmediate();              ko.dependencyDetection.registerDependency(dependentObservable);              return _latestValue;          }      }

durandal是否需要在绑定字符串的末尾加上括号,或者它是否可以配置?

问题是我包含了两次knockout库:它是同步加载的,也是通过requirejs加载的。事实证明,requirejs仍然会加载脚本,即使它已经同步加载了。

将此添加到main.js解决了问题:

define('knockout', [], function() {
    return ko;
});

最新更新