javascript - 如何访问在 ember 中的路由或组件中设置的模板文件上的变量

标签 javascript ember.js components

这是非常基本的问题,但我在任何地方都找不到它。

根据我的理解,在渲染模板对应的路由或 component.js 的 beforeModel() model() 等函数被调用之前。

我想做的事情: 我想在我的侧导航上显示登录用户的图像。用户的数据存储在本地存储中。

我的问题在这里 我希望在模型中设置一个变量并返回相同的变量可以解决我的问题,但我的模型方法根本没有被调用。

我的代码: 模板:

{{#paper-sidenav
      class="md-whiteframe-z2"
      name="right"
      open=leftSideBarOpen2
      lockedOpen=leftSideBarLockedOpen
      position="right"
      onToggle=(action (mut leftSideBarOpen2))}}
      {{#paper-toolbar as |toolbar|}}
        {{#paper-toolbar-tools}}
          <img src="http://example.com/users/{{model.username}}.jpg" />
        {{/paper-toolbar-tools}}
      {{/paper-toolbar}}
      {{#paper-content padding=true}}
        Çup?
      {{/paper-content}}
    {{/paper-sidenav}}

Component.js

import Ember from 'ember';

export default Ember.Component.extend({
  beforeModel(){

  },
  model(){
    let user = localStorage.get('user');
    console.log(user.username);
    return user;
  },
  actions:{
    toggle(propName) {
      this.toggleProperty(propName);
    }
  }
});

在控制台中,我收到错误“GET http://example.com/users/.jpg 404(未找到)”,这肯定表明我的模板中的 user.username 计算结果为 null。我尝试在 Chrome 的开发工具中调试我的模型方法,发现模型没有被调用 你能告诉我我错在哪里吗?

最佳答案

Ember 组件没有 model() 和 afterModel() 钩子(Hook),您需要做的是首先在路由中的 afterModel() 钩子(Hook)中访问本地存储数据,并将解析后的模型传递给组件。

主要路线

 export default Ember.Route.extend({
      model(){
        //load data
      },
      afterModel(model){
       //access local store and set to model
         model.set('users',data);
      }
    });

主要路线hbs

{{component componetModel=model}}

内部组件

import Ember from 'ember';

    export default Ember.Component.extend({
       init(){
         this.set('users', componetModel.users);
       }
    });

成分 hbs

{{#each user in users}}
  {{user.name}}
{{/each}}

关于javascript - 如何访问在 ember 中的路由或组件中设置的模板文件上的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42570438/

相关文章:

javascript - EmberJS 将变量传递给布局

javascript - 组件的 Angular 2 导入在 VS 中有效,但在浏览器中给出 404

Delphi 获取具有滚动条的组件的实际全高/宽度

javascript - 有没有一种可靠的方法可以使用 javascript 将天真的 UTC 时间戳转换为本地时间?

javascript - 自动单击网页上的预定义区域?

javascript - MediaElement.js - 获取调试信息

javascript - getElementById 数组

javascript - 如何用Ember形成下表?

javascript - 在 EmberJS 中如何将属性从一个组件传递到另一个组件?

java - 使用 JPanel 引用更改子组件?