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

问题描述 投票:0回答:1

在这个例子中,我使用了knock.with require.js。

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

我仍然可以在函数中访问Main.result()。我可以为它设置值,但由于某种原因我不能使用.push。

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
    }
  }
});
javascript knockout.js requirejs
1个回答
6
投票

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

要么:

Main.result = ko.observableArray([]);

或这个 :

Main.result = ko.observableArray();

但是,如果您希望将其重置为空数组,请使用下面的代码段:

Main.result([]);
© www.soinside.com 2019 - 2024. All rights reserved.