淘汰赛:无法处理绑定

我早些时候问过这个问题,但没有得到答案。

我运行代码时收到此错误消息:

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

如果问题仍然存在,请使用上面的小提琴,并尝试在其中构建您的代码让我知道。