要开始这个问题与大多数SO问题略有不同,这里有一段代码:
thingsToLoad: [{
id: 'thing1',
controller: function(el) {
el.my_project_controller1({});
}
}, {
id: 'thing2',
controller: function(el) {
el.my_project_controller2({});
}
}],
init: function() {
var self = this;
$.each(self.thingsToLoad, function(index, tool) {
tool.controller(self.find('#'+tool.id));
});
}
确定,因为函数是第一类对象,我应该能够这样做:
thingsToLoad: [{
id: 'thing1',
controller: my_project_controller1
}, {
id: 'thing2',
controller: my_project_controller2
}],
init: function() {
var self = this;
$.each(self.thingsToLoad, function(index, tool) {
self.find('#'+tool.id).tool.controller({});
});
}
但是,它会在第一次声明控制器时停在thingsToLoad
。错误是:Uncaught ReferenceError: my_project_controller1 is not defined
为什么会发生这种情况?我无法弄明白。
答案 0 :(得分:1)
el.my_project_controller1
与my_project_controller1
相同。
第一个是对象的属性,第二个是独立变量。错误告诉你一切;该变量未定义。