【问题标题】:Render, Partial, View. what should i put in my template?渲染,部分,查看。我应该在我的模板中放什么?
【发布时间】:2014-06-17 14:40:10
【问题描述】:

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

到目前为止,小部件的逻辑是这样的:

{{#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 将此组件/视图/部分放入应用程序模板的最佳方法是什么?

我是 ember 的新手,所以请善待 :)。

【问题讨论】:

  • 我不会使用 UserController,而是将这个逻辑放入 ApplicationController。你不需要其他控制器/路由......关于你的模态逻辑discuss.emberjs.com/t/…
  • 感谢您将我引导至模态逻辑论坛。这似乎是一个高度自以为是的话题。我喜欢手动插入模式的想法,但是在我手动创建视图并将视图插入层次结构之前,我需要处理我的 ember fu。

标签: javascript html ember.js handlebars.js


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 您可以将控制器/模型属性绑定到组件中的元素吗?我希望创建一个按钮,在尝试登录时显示加载符号,失败时显示十字,成功时显示成功刻度。我想让这个按钮成为一个可重用的组件,但我还没有思考如何“控制”这个组件的不同状态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 2013-03-18
  • 2011-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多