ember.js嵌入内容的奇怪行为

时间:2012-07-13 05:11:23

标签: ember.js

我有一个奇怪的错误导致我挠头。

我有一个Ember.State,每当我输入一个控制器时,我就会新建一个控制器:

  show: Ember.State.extend({
    enter: function(manager, transition) {
      this._super(manager, transition);

      var contact = App.store.find(App.Contact, App.appController.get('params'));

      App.set('selectedContactController', App.SelectedContactController.create({}));

      //TODO: Why do I have to do this when I have just called create?
      if(App.getPath('selectedContactController.content') && App.getPath('selectedContactController.content.length') > 0){
        App.setPath('selectedContactController.content', Ember.A());
      }

在代码的另一部分中,我将控制器的内容设置为从数据存储加载的数组。

我已在我正在撰写此问题的行上方发表评论。即使我调用create,我也必须清除内容集合。这使我很困惑。

SelectedContactController看起来像这样:

App.SelectedContactController = Ember.ArrayProxy.extend(App.FeedScroller, { 

内容属性来自App.FeedScroller mixin,如下所示:

App.FeedScroller = Ember.Mixin.create(Ember.Evented, {
  content: Ember.A(),

任何人都知道为什么在调用create({})时内容属性不会被销毁?

1 个答案:

答案 0 :(得分:0)

执行此操作时:

  

App.SelectedContactController.create({})

您仍然继承默认属性,其中一些来自原型链中的mixin。

如果您不想在您创建的实例中使用这些默认属性,则必须将它们明确地传递为 null

  

App.SelectedContactController.create({含量:空})

看看这个jsFiddle:http://jsfiddle.net/lifeinafolder/ag2Nb/

希望这有帮助。