渲染,局部,视图。我应该在模板中添加什么?

时间:2014-05-01 05:00:32

标签: javascript html ember.js handlebars.js

我有一个应用程序,我希望创建一个用户配置文件小部件。窗口小部件将位于应用程序模板的导航栏中。小部件看起来像一个登录按钮,弹出模态登录对话框或下拉菜单,其中包含指向各种用户相关功能/路线的链接。

小部件的逻辑到目前为止:

{{#if 'user.loggedIn'}}
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-user"/> {{user.username}}</a>
<ul class="dropdown-menu">
    <li>{{#link-to "profile" user}}Profile{{/link-to}}</li>
    <li>{{#link-to "logoff" user}}Logout{{/link-to}}</li>
</ul>
{{else}}
    <button class="btn btn-primary navbar-btn" data-target="#loginModal" data-toggle="modal">Login</button>
{{/if}}

我希望控制器处理登录功能并调用模态提示符:

App.UserController = Em.ObjectController.extend({
    loggedIn: Em.computed.readOnly('model.loggedIn'),
    username: '',
    password: '',
    showLoginModal: function(){
        Em.$("#loginModal").modal();
    },
    hideLoginModal: function() {
        Em.$("#loginModal").modal('hide');
    },
    login: function() {
        var username = this.get('username'),
            success = true; //attempt a login
        console.log('logging in as' + username);
        if(success) {
            this.send('hideLoginModal');
            this.set('user.loggedIn', true);
        }
        return false;
    }
});

所以我的问题是,使用用于窗口小部件的UserController将此组件/视图/部分放入应用程序模板的最佳方法是什么?

我很贪图,所以请保持友好:)。

1 个答案:

答案 0 :(得分:0)

我会为视图使用一个组件,并在ApplicationController和UserModel中处理登录逻辑。

但实际上,有多种方法可以解决这个问题! U也可以直接在applicationTemplate中完成。

但是:你不应该使用普通视图或部分视图!大多数情况下你应该使用一个组件!

渲染助手是一个选项,如果你需要视图/控制器模式,如果它没有明确分开!

Generall: 如果你可以分开它,你应该。然后你应该使用一个组件。