Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js Ember导航栏需要在更改时显示模型数据_Ember.js - Fatal编程技术网

Ember.js Ember导航栏需要在更改时显示模型数据

Ember.js Ember导航栏需要在更改时显示模型数据,ember.js,Ember.js,我正在开发一个需要在登录后修改导航栏内容的应用程序。下面是我整理的一个基本草图(在其他在线示例的帮助下): 使用此基础代码: 如何获取标题视图以显示模型数据 我应该为模板使用不同的帮助器吗?(例如{{view}}、{{render}或{{control}) 顺便说一句,我已经搜索了这个网站和其他网站,但大多数条目都有几个月的历史,而且我看到ember从那时起已经发生了很大的变化(或者我遗漏了一些明显的东西)。上面的示例使用Ember 1.0.0 RC6 Bryan您最终希望绑定控制器(可能是Ap

我正在开发一个需要在登录后修改导航栏内容的应用程序。下面是我整理的一个基本草图(在其他在线示例的帮助下): 使用此基础代码:

如何获取标题视图以显示模型数据

我应该为模板使用不同的帮助器吗?(例如{{view}}、{{render}或{{control})

顺便说一句,我已经搜索了这个网站和其他网站,但大多数条目都有几个月的历史,而且我看到ember从那时起已经发生了很大的变化(或者我遗漏了一些明显的东西)。上面的示例使用Ember 1.0.0 RC6


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”]
    (例如,在另一个控制器中)