Ember.js Ember导航栏需要在更改时显示模型数据
我正在开发一个需要在登录后修改导航栏内容的应用程序。下面是我整理的一个基本草图(在其他在线示例的帮助下): 使用此基础代码: 如何获取标题视图以显示模型数据 我应该为模板使用不同的帮助器吗?(例如{{view}}、{{render}或{{control}) 顺便说一句,我已经搜索了这个网站和其他网站,但大多数条目都有几个月的历史,而且我看到ember从那时起已经发生了很大的变化(或者我遗漏了一些明显的东西)。上面的示例使用Ember 1.0.0 RC6Ember.js Ember导航栏需要在更改时显示模型数据,ember.js,Ember.js,我正在开发一个需要在登录后修改导航栏内容的应用程序。下面是我整理的一个基本草图(在其他在线示例的帮助下): 使用此基础代码: 如何获取标题视图以显示模型数据 我应该为模板使用不同的帮助器吗?(例如{{view}}、{{render}或{{control}) 顺便说一句,我已经搜索了这个网站和其他网站,但大多数条目都有几个月的历史,而且我看到ember从那时起已经发生了很大的变化(或者我遗漏了一些明显的东西)。上面的示例使用Ember 1.0.0 RC6 Bryan您最终希望绑定控制器(可能是Ap
Bryan您最终希望绑定控制器(可能是
ApplicationController
)中的值,以跟踪用户是否登录。因为这是关于登录的,所以您很可能有一个SessionController之类的东西来跟踪令牌。这里有一种方法:
App.SessionController = Em.Controller.extend({
token: null,
username: null,
isLoggedIn: function() {
return !!this.get("token");
}.property("token");
// ...
});
App.ApplicationController = Em.Controller.extend({
needs: "session",
isLoggedInBinding: "controllers.session.isLoggedIn",
usernameBinding: "controllers.session.username"
//...
});
在模板的导航栏中:
{{#if isLoggedIn}}
<li>Logged in as {{username}}</li>
<li>{{#linkTo "index"}}Home{{/linkTo}}</li>
<li>{{#linkTo "secret"}}Secret{{/linkTo}}</li>
{{else}}
<li>{{#linkTo "login"}}Log in{{/linkTo}}</li>
{{/if}}
{{#if isLoggedIn}
以{{username}身份登录
{{{#链接到“索引”}主页{{/linkTo}
{{{linkTo“secret”}secret{{/linkTo}
{{else}
{{{#linkTo“login”}登录{{/linkTo}}
{{/if}
您最终希望绑定控制器中的值(可能是ApplicationController
),该值跟踪用户是否登录。因为这是关于登录的,所以您很可能有一个SessionController之类的东西来跟踪令牌。这里有一种方法:
App.SessionController = Em.Controller.extend({
token: null,
username: null,
isLoggedIn: function() {
return !!this.get("token");
}.property("token");
// ...
});
App.ApplicationController = Em.Controller.extend({
needs: "session",
isLoggedInBinding: "controllers.session.isLoggedIn",
usernameBinding: "controllers.session.username"
//...
});
在模板的导航栏中:
{{#if isLoggedIn}}
<li>Logged in as {{username}}</li>
<li>{{#linkTo "index"}}Home{{/linkTo}}</li>
<li>{{#linkTo "secret"}}Secret{{/linkTo}}</li>
{{else}}
<li>{{#linkTo "login"}}Log in{{/linkTo}}</li>
{{/if}}
{{#if isLoggedIn}
以{{username}身份登录
{{{#链接到“索引”}主页{{/linkTo}
{{{linkTo“secret”}secret{{/linkTo}
{{else}
{{{#linkTo“login”}登录{{/linkTo}}
{{/if}
谢谢!我试试看,我成功了,但只成功了一半。我最终使用了{{partial}}模板帮助器,因此当“isAuthenticated”值更改时,标题内容也会更改。如下(在coffeescript中):App.LoginController=Ember.ObjectController.extend需要:“会话”。。。单击登录:(e)->@set(“model.IsAuthenticated”,true)@set(“controllers.session.IsAuthenticated”,true)
再次感谢您的帮助-不过,布莱恩还有一个问题。控制器是否有办法观察余烬数据模型对象的更改?我尝试了这个,但没有成功:App.SessionController=Em.Controller.extend username:null usernameBinding:'App.Me.username'isAuthenticated:null isAuthenticatedBinding:'App.Me.isAuthenticated'
我想你尝试做的是类似于App.SessionController
<代码>需要:“我”<代码>用户名绑定:“controllers.me.username”。。。等等您只希望App.MeController
表示Me
模型。使用SessionController
来“观察”Me
,这就是需要
属性的地方,就像我们在ApplicationController
中使用它来观察SessionController
的瞬态属性一样。酷!谢谢你的提示。我试试看。是否可以为“需要”提供一个数组,例如需要:[“我”,“会话”]
(例如在另一个控制器中)谢谢!我试试看,我成功了,但只成功了一半。我最终使用了{{partial}}模板帮助器,因此当“isAuthenticated”值更改时,标题内容也会更改。如下(在coffeescript中):App.LoginController=Ember.ObjectController.extend需要:“会话”。。。单击登录:(e)->@set(“model.IsAuthenticated”,true)@set(“controllers.session.IsAuthenticated”,true)
再次感谢您的帮助-不过,布莱恩还有一个问题。控制器是否有办法观察余烬数据模型对象的更改?我尝试了这个,但没有成功:App.SessionController=Em.Controller.extend username:null usernameBinding:'App.Me.username'isAuthenticated:null isAuthenticatedBinding:'App.Me.isAuthenticated'
我想你尝试做的是类似于App.SessionController
<代码>需要:“我”<代码>用户名绑定:“controllers.me.username”。。。等等您只希望App.MeController
表示Me
模型。使用SessionController
来“观察”Me
,这就是需要
属性的地方,就像我们在ApplicationController
中使用它来观察SessionController
的瞬态属性一样。酷!谢谢你的提示。我试试看。是否可以为“需要”提供一个数组,例如需要:[“me”,“session”]
(例如,在另一个控制器中)