gpt4 book ai didi

javascript - Durandal TodoMVC - 无法将值写入 ko.computed

转载 作者:行者123 更新时间:2023-11-29 18:22:56 26 4
gpt4 key购买 nike

我正在尝试使用 Durandal 构建待办事项应用程序的一个版本(包括 Knockout + RequireJS )来自 TodoMVC template .我意识到待办事项应用程序并没有真正展示 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.")

我还附上了在控制台中显示这些内容的图像。

ko.computed errors

您可以在 https://github.com/robksawyer/durandal-todo 找到源代码. todo View 模型位于 https://github.com/robksawyer/durandal-todo/blob/master/viewmodels/todos.js .

更新:大部分 Knockout 代码是从 https://github.com/tastejs/todomvc/tree/gh-pages/labs/dependency-examples/knockoutjs_require/ 的 Knockout+Require TodoMVC 项目借用的。

感谢您的宝贵时间。

最佳答案

我认为你误读了控制台。

例如,“allCompleted”是您的 View 模型的一个属性,它被声明为依赖可观察对象(即“计算”):

// writeable computed observable to handle marking all complete/incomplete
self.allCompleted = ko.computed({
// -- trimmed --
});

您在控制台中看到的不是 Cannot write a value 错误;它是 computed 属性的调试输出 - 即它的函数定义。作为引用,这是直接来自 knockout (2.2.1) source 的依赖可观察对象的函数定义。 :

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;
}
}

您在控制台中看到的是此代码的缩小版本。

如果您想查看属性返回的,您必须调用它。

关于javascript - Durandal TodoMVC - 无法将值写入 ko.computed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16550727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com