我有以下内容:
$scope.option = {
generateID:function(){
return Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5);
},
values : [
{id:this.generateId()},
{id:this.generateId()},
{id:this.generateId()},
{id:this.generateId()}
],
markCorrect : function(option){
},
remove:function(option)
{
this.values = this.values.filter(function(value){return value.id!=option.id})
}
}
我总是收到this.generateId is not a function
错误。我很确定我在这里缺少一些基本的东西!
答案 0 :(得分:0)
将id生成器函数存储在单独的函数中可能更好,因此更容易引用:
function generateId = function() {
return Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5);
}
$scope.option = {
generateID: generateId,
values : [
{id: generateId()},
{id: generateId()},
{id: generateId()},
{id: generateId()}
],
markCorrect : function(option){
},
remove:function(option)
{
this.values = this.values.filter(function(value){return value.id!=option.id})
}
}
答案 1 :(得分:0)
主要问题是您在声明它的过程中尝试访问$scope.option
的属性。尝试做这样的事情:
$scope.option = (function () {
function generateId () {
/* logic */
}
return {
values: [
{id: generateId()}
// ...
],
markCorrect: function () {},
remove: function () {}
};
}) ();
这是'揭示模块模式',即返回一个对象形成一些其他数据或功能的闭包的函数。
答案 2 :(得分:0)
有一个错字;将generateID
重命名为generateId
。