我正在尝试使用杜兰达尔 (包括淘汰赛 + RequireJS)从TodoMVC模板构建todo应用程序的一个版本。我意识到todo应用并不真正展示Durandal的功能,但我正在学习,并认为这将是一个很好的第一个项目。
无论如何,在这个过程中,我无意中发现了一个我无法解决的错误(见下文)。
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.")我还附加了一个在控制台中显示这些的图像。

您可以在https://github.com/robksawyer/durandal-todo找到源代码。todo视图模型位于https://github.com/robksawyer/durandal-todo/blob/master/viewmodels/todos.js。
更新:大部分代码都是从要求/的Knockout+Require TodoMVC项目借来的。
耽误您时间,实在对不起。
发布于 2013-05-15 06:16:54
我觉得你看错控制台了。
例如,"allCompleted“是视图模型上的一个属性,它被声明为一个依赖的可观测(即”计算“):
// writeable computed observable to handle marking all complete/incomplete
self.allCompleted = ko.computed({
// -- trimmed --
});您在控制台中看到的不是Cannot write a value错误,而是computed属性的调试输出-即它的函数定义。作为参考,下面是直接从敲除(2.2.1)源中直接观察到的依赖函数的定义
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;
}
}您在控制台中看到的是该代码的小型化版本。
如果要查看属性返回的值,则必须调用它。
https://stackoverflow.com/questions/16550727
复制相似问题