Ember.js过滤内容并使用按钮操作

时间:2013-07-01 15:26:45

标签: javascript ember.js

我遇到了以下问题:我有一个控制器,我想过滤模型,如:

App.ProductsController = Ember.ArrayController.extend({
  itemController: 'product',

  filteredContent: function(query) {
    var query = this.get('query')

    var products = this.get('content').filter(function(item) {
      return true // Condition goes here
    })

    return products
  }.property('query')
})

我认为哪种方法正常:

{{#each product in filteredContent}}
  ...
  <h1>{{product.name}}</h1>
  ...
  <button {{action addToCart}}>Add to cart</button>
{{/each}}

至少就循环而言。操作addToCart不起作用,并在按下按钮时导致错误Nothing handled the event 'addToCart'。即使它是在ProductController

中定义的

现在,这是一个有趣的部分:如果我不在我的视图中使用过滤结果,而只是使用each product in controller,则addToCart点击工作正常。我想有一些我不理解的视图和控制器之间的关系,所以我感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

使用{{#each item in items}}语法does not change the binding scope。因此,您已绑定到product.name。如果addToCart位于ProductController而不是ProductsController中,则需要将操作绑定编写为action addToCart target="product"