【问题标题】:Using Knockout push in a function returns an error在函数中使用 Knockout push 会返回错误
【发布时间】:2015-02-13 01:38:33
【问题描述】:

在这个例子中,我使用了 require.js 的淘汰赛。

在 Main.roll() 之外,Main.result.push 按预期工作。在函数内部,它会抛出一个错误:Uncaught TypeError: Cannot read property 'apply' of undefined。

我仍然可以在函数中访问 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
    }
  }
});

【问题讨论】:

  • 如果删除该函数中的Main.result('') 行,它会改变什么吗?
  • 是的,但我不得不重置阵列。这是错误的语法。下面的答案明白了。

标签: javascript knockout.js requirejs


【解决方案1】:

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

要么:

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

或者这个:

Main.result = ko.observableArray();

但是,如果您想将其重置为空数组,请使用下面的代码 sn-p:

Main.result([]);

【讨论】:

  • 如此明显!谢谢! :-)
猜你喜欢
  • 2014-11-11
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
  • 2017-07-24
  • 2016-06-20
相关资源
最近更新 更多