當我在我的應用程序導航,我經常會收到這樣的錯誤,進一步摧毀所有導航在我的應用程序的視圖,我需要重新加載整個頁面:未捕獲的:你不能調用重新呈現在被破壞
Uncaught You can't call rerender on a view being destroyed
我和Ember IRC頻道的幾個男孩找出了導致問題的原因。
這是我使用的https://github.com/emberjs/group-helper的小組幫手。整個應用程序設置爲使用該應用程序,並且如果我刪除了許多內容,因爲很多metamorph標記開始再次創建。
任何想法如何修改幫手,使錯誤消失?
var get = Ember.get, set = Ember.set, EmberHandlebars = Ember.Handlebars;
EmberHandlebars.registerHelper('group', function(options) {
var data = options.data,
fn = options.fn,
view = data.view,
childView;
childView = view.createChildView(Ember._MetamorphView, {
context: get(view, 'context'),
template: function(context, options) {
options.data.insideGroup = true;
return fn(context, options);
}
});
view.appendChild(childView);
});
更新:下面的東西已經過時,只有在那裏,因爲它是在原崗位
在我的應用程序,我有這三個子類,這是我基地所有我的看法,陣列控制器中的路線。
查看:
PageView = Ember.View.extend({
title: '',
identifier: '',
classNames: ['page'],
willDestroyElement: function() {
var elm_classes = this.$().attr('class') + ' out',
elm_height = this.$().height(),
temporary_container = $('<div class="'+elm_classes+'">');
this.$().children().appendTo(temporary_container);
temporary_container.insertAfter(this.$());
window.setTimeout(function() {
temporary_container.remove();
}, animationKillDuration);
},
didInsertElement: function() {
$(document).trigger('royalbeer-page-rendered');
}
});
陣列控制器
RoyalArrayController = Ember.ArrayController.extend({
goto: function(route, slug) {
if (!slug)
this.transitionToRoute(route);
else
this.transitionToRoute(route, slug);
}
});
路線:
RoyalRoute = Ember.Route.extend({
setupController: function(controller, model) {
var modelName = this.routeName.substr(0, 1).toUpperCase() + this.routeName.substr(1),
slug = model;
if (model.hasOwnProperty('slug'))
slug = model.slug;
controller.set('model', App[modelName].find({'slug': slug}));
},
serialize: function(slug, params) {
var name, object;
object = {};
name = params[0];
object[name] = slug;
return object;
}
});
我使用goto函數的n在陣列控制器中綁定我的應用程序中的元素以便與{{action goto 'routename' slug}}
導航,並且我的路由器上的序列化程序和setupController被設置爲能夠處理該問題,直到發生錯誤才能正常工作。
而且我只能猜測是因爲那些東西被打破了。
關於正在發生什麼以及如何解決它的任何想法?
我更新了這篇文章,因爲我針對問題的真正原因。我添加了導致錯誤的確切代碼。 – chrisbuchholz
感謝您發表本文!我有同樣的錯誤,並刪除組助手也修復它。我沒有進一步研究爲什麼。我可能也會離開小組幫手。 –