0

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

我有一个 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, { 

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

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

有人知道为什么调用 create({}) 时内容属性不会被破坏吗?

4

1 回答 1

0

当你这样做时:

App.SelectedContactController.create({})

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

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

App.SelectedContactController.create({content:null})

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

希望这可以帮助。

于 2012-07-13T06:18:19.247 回答