淘汰赛:无法处理绑定
我早些时候问过这个问题,但没有得到答案。
我运行代码时收到此错误消息:
Uncaught ReferenceError: Unable to process binding "visible: function (){return !editable() }" Message: editable is not defined
可编辑的函数应该切换为true / false,然后在按下按钮时切换到编辑模式。 这个按钮是通过html中的foreach调用的,所以我猜它与我的viewmodel有关。 我从我的getJson得到的输出工作正常,但可编辑的函数以某种方式冲突。
这是我的HTML代码:
-
:
这是我的javascript:
function Comment() { var self = this; self.nickname = ko.observable(); self.newMsg = ko.observable(); self.editable = ko.observable(false); self.sendEntry = function () { vm.selectedComment(new Comment()); if (self.newMsg() !== "" && self.nickname() !== "") { $.post(writeUrl, "entry=" + ko.toJSON(self)); self.newMsg(""); } vm.cSection().getNewEntries(); }; self.deleteComment = function () { vm.comments.remove(self); }; self.editComment = function () { self.editable(!self.editable()); }; } function commentSection() { var self = this; self.timestamp = 0; var entry; self.getNewEntries = function () { $.getJSON(readUrl, "timestamp=" + self.timestamp, function (comments) { for (var i = 0; i self.timestamp) { self.timestamp = entry.timestamp; } vm.comments.unshift(entry); } self.getNewEntries(); }); }; } function ViewModel(){ var self = this; self.cSection=ko.observable(new commentSection()); self.comments = ko.observableArray(); self.selectedComment = ko.observable(new Comment()); //self.cSection().getNewEntries(); } var vm=new ViewModel(); ko.applyBindings(vm); vm.cSection().getNewEntries(); });
我从你的代码中做了一些东西,现在切换工作正常。
请找到这个工作小提琴
查看:
查看型号:
$(document).ready(function() { vm = function ViewModel() { var self = this; self.comments = ko.observableArray(); function Comment() { var self=this; self.editable = ko.observable(false); self.editComment = function() { self.editable(!self.editable()); }; } self.comments.push(new Comment()); }; ko.applyBindings(new vm); });
如果问题仍然存在,请使用上面的小提琴,并尝试在其中构建您的代码让我知道。