模板中的条件逻辑取决于路由

时间:2014-03-17 14:37:34

标签: ember.js

我想知道条件块是否可以在依赖于您当前所在的资源/路由的模板中使用。当访问使用相同模板的嵌套路由时,这将非常有用。

更多详情

我有一个名为" user"并且嵌套在该资源中的是名为" edit":

的路由
// Read single user
this.resource('user', {path:'/user/:UserID'}, function(){

  // Update / Delete existing user
  this.route('edit');

});

我知道我可以在"用户"中使用{{outlet}}模板,它将呈现" user / edit"模板,但我想在用户模板中使用条件语句。

例如:

{{if route is user}}
<h2>View User</h2>
{{/if}}
{{if route is user/edit}}
<h2>Edit User</h2>
{{/if}}

这可能吗?

谢谢, 汤姆

2 个答案:

答案 0 :(得分:1)

这是可能的,但不推荐使用,因为使用较少的代码可以获得相同的结果,并且在用户模板中使用{{outlet}}可以减少错误。

如果你仍然坚持使用你建议的反模式,我会做的是使用UserEditRoute上的activate / deactivate钩子来设置/取消设置userController实例上的“isInEditMode”属性,并使用模板条件该财产。

我不想提供示例代码,因为这是一种不好的做法,我不希望任何人使用它。

对不起。

答案 1 :(得分:0)

Meori是对的。如果您嵌套路线,还应通过{{outlet}}嵌套模板。如果要渲染不同的模板,则不应嵌套路径。

所以也许你想要用这样的东西:

App.Router.map(function() {
  this.resource('user', { path: '/user/:UserID' });
  this.route('user.edit', { path: '/user/:UserID/edit' });
});

然后您可以使用不同的模板来显示和编辑用户。