Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 淘汰赛无法处理';foreach&x27;_Javascript_Jquery_Html_Knockout.js - Fatal编程技术网

Javascript 淘汰赛无法处理';foreach&x27;

Javascript 淘汰赛无法处理';foreach&x27;,javascript,jquery,html,knockout.js,Javascript,Jquery,Html,Knockout.js,我是个新手。对于我的问题,我正在努力使每个项目都有一个按钮和文本区域。文本区域将在页面加载时隐藏。如果我单击按钮,它将显示文本区域,或隐藏它(切换)。我已经实现了以下代码,但出现了此错误: 未捕获引用错误:无法处理绑定“foreach:函数” (){return projects}“消息:无法处理绑定”可见: 函数(){return show}消息:未定义show 视图模型: function ProjectViewModel(proj) { //console.log(

我是个新手。对于我的问题,我正在努力使每个项目都有一个按钮和文本区域。文本区域将在页面加载时隐藏。如果我单击按钮,它将显示文本区域,或隐藏它(切换)。我已经实现了以下代码,但出现了此错误:

未捕获引用错误:无法处理绑定“foreach:函数” (){return projects}“消息:无法处理绑定”可见: 函数(){return show}消息:未定义show

视图模型:

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 ... "