我有一个奇怪的错误导致我挠头。
我有一个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({})时内容属性不会被销毁?
答案 0 :(得分:0)
执行此操作时:
App.SelectedContactController.create({})
您仍然继承默认属性,其中一些来自原型链中的mixin。
如果您不想在您创建的实例中使用这些默认属性,则必须将它们明确地传递为 null
App.SelectedContactController.create({含量:空})
看看这个jsFiddle:http://jsfiddle.net/lifeinafolder/ag2Nb/
希望这有帮助。