如何将按钮连接到其他控制器

时间:2013-04-16 06:51:03

标签: ember.js

在模板中,我遍历所有Users。从每个User开始,我想将按钮连接到xyz(singluar)中的UserController函数。我如何使用{{action}}来做到这一点?现在我的所有尝试都以UsersController结束。

的index.html

<script type="text/x-handlebars" data-template-name="users">
  <table>
    {{#each model}}
      <tr>
        <td>{{lastName}}</td>
        <td><button {{action "xyz" this}}>Xyz</button></td>
      </tr>
    {{/each}}
  </table>
</script>

app.js

App = Ember.Application.create();

App.Store = DS.Store.extend({
  revision: 12,
  adapter: 'DS.FixtureAdapter'
})

App.Router.map(function() {
  this.resource('about');
  this.resource('users', function() {
    this.resource('user', { path: ':user_id' })
  })
});

App.UsersRoute = Ember.Route.extend({
  model: function() {
    return App.User.find();
  }
});

App.UserController = Ember.ObjectController.extend({
  xyz: function() {
    console.log('Bingo!')
  }  
})

App.User = DS.Model.extend({
  lastName: DS.attr('string'),
})

App.User.FIXTURES = [{
  id: 1,
  lastName: "Clinton"
}, {
  id: 2,
  lastName: "Obama"
}]

1 个答案:

答案 0 :(得分:1)

一种解决方案可能是使用itemController="user"助手的each属性。这样,目标控制器应该是每个用户的UserController实例。

{{#each model itemController="user"}}
  <tr>
    <td>{{lastName}}</td>
    <td><button {{action "xyz" this}}>Xyz</button></td>
  </tr>
{{/each}}