如何在ember RC3中动态修改视图

时间:2013-04-23 23:22:40

标签: ember.js

我有以下用例。 在服务器端错误我想向用户显示出错的地方(可能允许他们重试)。我可以使用弹出窗口或状态栏。 同时我想保持当前视图处于打开状态,即用户应该保持错误发生的位置。

我想(如果我错了请纠正我)我不应该使用transitionTo(...),因为这将取代我当前的观点。我的意图是在应用程序视图(最外面的模板/视图)中使用通用功能来动态添加/删除通知。

非常欢迎如何构建和修改UI的设计思路。

谢谢!

1 个答案:

答案 0 :(得分:1)

我对这个确切用例的解决方案很简单。我在ApplicationRoute中定义了一个事件处理程序,它收集这些异常并将它们注入我的自定义ExceptionsControllerexceptions呈现在主应​​用程序模板中。

App.ApplicationRoute = Ember.Route.extend({
    events: {
        exceptionHandler: function (exception) {
            this.controllerFor('exceptions').addObject(exception);
        }
    }
});

ExceptionsController只是ArrayController的扩展名。

App.ExceptionsController = Ember.ArrayController.extend();

最后在我的主应用程序模板的某处,我只使用:

{{render 'exceptions'}}

我会把模板留给你的想象力。

修改

然后,如果您想引发异常,只需使用send在您的控制器或路线中的任何位置触发操作。

this.send('exceptionHandler', exception);

您的自定义模型的例外情况。

此解决方案的优点是您可以在应用程序路径下方或任何控制器中的任何其他路径中覆盖处理程序。