Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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 在函数中使用Knockout push返回错误_Javascript_Knockout.js_Requirejs - Fatal编程技术网

Javascript 在函数中使用Knockout push返回错误

Javascript 在函数中使用Knockout push返回错误,javascript,knockout.js,requirejs,Javascript,Knockout.js,Requirejs,在本例中,我将knockout与require.js一起使用 在Main.roll()外部,Main.result.push按预期工作。在函数内部,它抛出一个错误:uncaughttypeerror:无法读取未定义的属性“apply” 我仍然可以访问函数中的Main.result()。我可以设置它的值,但我不能使用。出于某种原因推送 define(['knockout', 'd20'], function(ko, d20) { return function main() { va

在本例中,我将knockout与require.js一起使用

在Main.roll()外部,Main.result.push按预期工作。在函数内部,它抛出一个错误:uncaughttypeerror:无法读取未定义的属性“apply”

我仍然可以访问函数中的Main.result()。我可以设置它的值,但我不能使用。出于某种原因推送

define(['knockout', 'd20'], function(ko, d20) {

  return function main() {
    var Main = this;

    Main.result = ko.observableArray('');

    Main.result.push( d20.roll('2d8+2') ); // works

    Main.roll = function() {

      Main.result('');

      Main.result.push( d20.roll('2d8+2') );  // no workie
    }
  }
});

语法不正确。您正在处理数组,因此无法将其设置为空字符串。以下是初始化阵列的两种方法:

或者:

Main.result = ko.observableArray([]);
或者这个:

Main.result = ko.observableArray();
但是,如果希望将其重置为空数组,请使用以下代码段:

Main.result([]);

语法不正确。您正在处理数组,因此无法将其设置为空字符串。以下是初始化阵列的两种方法:

或者:

Main.result = ko.observableArray([]);
或者这个:

Main.result = ko.observableArray();
但是,如果希望将其重置为空数组,请使用以下代码段:

Main.result([]);

如果删除该函数中的
Main.result(“”)
行,它会改变什么吗?是的,但我必须重置数组。这是错误的语法。下面的答案是正确的。如果删除该函数中的
Main.result(“”)
行,它会改变什么吗?是的,但我必须重置数组。这是错误的语法。下面的答案明白了。太明显了!谢谢!:-)太明显了!谢谢!:-)