【问题标题】:Durandal is not unwrapping observablesDurandal 没有展开 observables
【发布时间】:2014-10-17 20:35:31
【问题描述】:

我正在将我的淘汰赛项目升级到 durandal,并注意到一些标准淘汰赛绑定没有按预期工作。

淘汰赛在这之间没有任何区别:

<!-- 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 是否需要在绑定字符串的末尾加上括号,还是可以以某种方式配置?

【问题讨论】:

  • 这应该可以正常工作,因此没有特殊的设置或配置选项。但是,您应该确保您没有包含其他可观察对象的可观察对象。所以请检查您的someObservable 是否包含实际值,而不是另一个可观察值。
  • 绝对同意 nemesv 在这里验证了这个工作多次。

标签: knockout.js durandal durandal-2.0


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 2018-06-21
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多