使用JS MVC控制器作为存储值,作为第一类对象

时间:2014-02-25 18:04:43

标签: javascript jquery model-view-controller

要开始这个问题与大多数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为什么会发生这种情况?我无法弄明白。

1 个答案:

答案 0 :(得分:1)

el.my_project_controller1 my_project_controller1相同。

第一个是对象的属性,第二个是独立变量。错误告诉你一切;该变量未定义。