Javascript 淘汰赛无法处理';foreach&x27;
我是个新手。对于我的问题,我正在努力使每个项目都有一个按钮和文本区域。文本区域将在页面加载时隐藏。如果我单击按钮,它将显示文本区域,或隐藏它(切换)。我已经实现了以下代码,但出现了此错误: 未捕获引用错误:无法处理绑定“foreach:函数” (){return projects}“消息:无法处理绑定”可见: 函数(){return show}消息:未定义show 视图模型:Javascript 淘汰赛无法处理';foreach&x27;,javascript,jquery,html,knockout.js,Javascript,Jquery,Html,Knockout.js,我是个新手。对于我的问题,我正在努力使每个项目都有一个按钮和文本区域。文本区域将在页面加载时隐藏。如果我单击按钮,它将显示文本区域,或隐藏它(切换)。我已经实现了以下代码,但出现了此错误: 未捕获引用错误:无法处理绑定“foreach:函数” (){return projects}“消息:无法处理绑定”可见: 函数(){return show}消息:未定义show 视图模型: function ProjectViewModel(proj) { //console.log(
function ProjectViewModel(proj) {
//console.log(proj);
var self = this;
self.projects = ko.observableArray(proj);
self.show = ko.observable(false);
self.toggleTextArea = function () {
self.show(!self.show());
};
};
HTML:
你以前做过这个项目吗?
我想再做一次。
您遇到的错误的重要部分是:
消息:未定义显示
这发生在您呼叫的地方:
data-bind="visible: show ... "
之所以会发生这种情况,是因为Knockout试图在projects
对象中查找名为show
的变量,但找不到变量,因为show
和projects
都是ProjectViewModel
的子对象
要引用show
,可以使用$parent.show
:
data-bind="visible: $parent.show ... "
我将
$parent
添加到toggleTextArea
中,但没有想到将其添加到show
。谢谢现在,这带来了一个新问题:当我单击按钮显示文本区域时,它会显示页面上的所有文本区域,而不仅仅是相应的文本区域。是否有方法将唯一标识符链接到切换,以便显示正确的文本区域?
data-bind="visible: $parent.show ... "