如何从emberjs控制器获取数据

时间:2014-07-25 03:03:08

标签: ember.js ember.js-view

我有路线列表

App.Router.map ()->
@resource 'about'

@resource 'users', ->
    @resource 'repositories', path: '/:user_name/repositories'
    @route 'show', path: '/:user_name'

在我的用户展示模板中,我也有一个视图

{{#view App.RepositoriesView login=login}}
  <div class="show_repos_control">
      <span>Show Repos</span>
  </div>

  {{#if reposWasQuery}}
    {{#each repositories}}
      {{repo_name}}
    {{/each}}
  {{/if}}   
{{/view}}

带有视图类

App.RepositoriesView = Ember.View.extend({
  click: function(evt) {
    this.get('controller').send('showRepos', this.get('login'));
  }
});

使用代码

查看具有代码的UsersShowController的类代码进程
App.UsersShowController = Ember.ObjectController.extend({
  reposWasQuery: false,
  actions:{
      showRepos: function(userName){
          this.set('reposWasQuery', true);
          this.set('repositories', jQuery.getJSON('/users/' + userName + '/repositories'));
    }
  }
})

存储库的数据分配为已被删除,但在我看来,我无法对其进行调度。得到错误&#34; #error有些数字&#34;

1 个答案:

答案 0 :(得分:1)

为控制器渲染view并使用打开的闭合块进行路由非常奇怪。

使用{{render 'repositories' myRepositoriesArray}}代替将执行以下操作:

  1. 使用Repositories作为您的数据呈现新的myRepositoriesArray控制器。
  2. 隐式创建RepositoriesView
  3. 您需要输入以下代码:

      <div class="show_repos_control">
          <span>Show Repos</span>
      </div>
    
      {{#if reposWasQuery}}
        {{#each repositories}}
          {{repo_name}}
        {{/each}}
      {{/if}}   
    

    repositories模板中。

    Ember在构建时考虑了配置。您应该阅读render帮助器以及ember在渲染路径时期望或创建的内容。