Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 未捕获:您可以';不要在视图被破坏时调用rerender_Ember.js_Navigation_Ember Data_Uncaught Exception - Fatal编程技术网

Ember.js 未捕获:您可以';不要在视图被破坏时调用rerender

Ember.js 未捕获:您可以';不要在视图被破坏时调用rerender,ember.js,navigation,ember-data,uncaught-exception,Ember.js,Navigation,Ember Data,Uncaught Exception,当我浏览我的应用程序时,我经常会遇到这样的错误,这会进一步破坏我应用程序中的所有导航,我必须重新加载整个页面: Uncaught You can't call rerender on a view being destroyed 一、 Ember IRC频道的几个男孩发现了问题的原因 这是我使用的组助手。整个应用程序都设置为使用它,如果我删除它,很多东西就会损坏,因为很多变形标签又开始创建了 知道如何修改帮助器以消除错误吗 var get = Ember.get, set = Ember.se

当我浏览我的应用程序时,我经常会遇到这样的错误,这会进一步破坏我应用程序中的所有导航,我必须重新加载整个页面:

Uncaught You can't call rerender on a view being destroyed
一、 Ember IRC频道的几个男孩发现了问题的原因

这是我使用的组助手。整个应用程序都设置为使用它,如果我删除它,很多东西就会损坏,因为很多变形标签又开始创建了

知道如何修改帮助器以消除错误吗

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');
    }
});
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;
    }
});
路线:

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');
    }
});
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函数将我的应用程序中的元素绑定到
{{action goto'routename'slug}}
,并将我的路线上的序列化程序和setupController设置为能够处理该问题,这在错误发生之前一直运行良好

我只能猜测,正是因为这些原因,事情才破裂


关于发生了什么以及如何修复它,有什么想法吗?

我现在已经解决了这个问题,将组帮助器全部删除,并将所有css从使用:first child/:last child重写为:first of type/:last of type。包括推特引导。它起作用了。但我真的很想找到一种方法,让Ember不让我的DOM在一般情况下使用变质标记膨胀。

我更新了这篇文章,因为我找到了问题的真正原因。我已经添加了导致错误的确切代码。感谢您发布此消息!!我也有同样的错误,删除组助手也修复了它。我还没有进一步探究原因。我可能也会把这个小组的助手撇下。