gpt4 book ai didi

javascript - knockout : Unable to process binding

转载 作者:搜寻专家 更新时间:2023-11-01 04:16:42 27 4
gpt4 key购买 nike

我之前问过这个问题,但没有得到答案。

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

Uncaught ReferenceError: Unable to process binding "visible: function (){return !editable() }"
Message: editable is not defined

可编辑功能应该切换真/假,然后在按下按钮时切换到编辑模式。这个按钮是通过 html 中的 foreach 调用的,所以我猜它与我的 View 模型有关。我从 getJson 获得的输出工作正常,但可编辑功能以某种方式发生冲突。

这是我的html代码:

<div><ul data-bind="foreach: comments">
<li class="ul3">
<span class="author" data-bind="text: nickname, visible: !editable(), click: editComment">
</span>
<input type="text" data-bind="value: nickname, visible: editable()"/>:
<div>

<span class="comment" data-bind="text: newMsg, visible: !editable(), click: editComment">
</span>
<textarea class="myComment" type="text" data-bind="value: newMsg, visible: editable()">
</textarea>

</div>
<button data-bind="click: editComment, text: editable() ? 'Save' : 'Edit comment'">
</button>
<button data-bind="click: deleteComment">Delete</button>
</li>
</ul>
</div>

这是我的 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 < comments.length; i++) {
entry = comments[i];
if (entry.timestamp > 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();

});

最佳答案

我用你的代码做了一些事情,现在切换工作正常。

请找到这个Working Fiddle

View :

<input type="button"
data-bind="click: editComment, value:editable() ? 'Save' : 'Edit comment'" />

查看模型:

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

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

关于javascript - knockout : Unable to process binding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26194616/

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