Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/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
Javascript Ember.js过滤内容并使用按钮操作_Javascript_Ember.js - Fatal编程技术网

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

Javascript Ember.js过滤内容并使用按钮操作,javascript,ember.js,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) {

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

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}}
{{#filteredContent中的每个产品}
...
{{product.name}
...
添加到购物车
{{/每个}}
至少在循环方面。操作
addToCart
不起作用,在按下按钮时导致错误
未处理事件“addToCart”
。即使它是在
ProductController
中定义的

现在有一个有趣的部分:如果我不使用过滤结果,而只是在我的视图中使用控制器中的每个产品,
addToCart
单击就可以了。我想我不明白视图和控制器之间的关系,所以我非常感谢您的帮助


谢谢

使用
{{{items}中的每个项}
语法。因此,您必须绑定到
product.name
。如果addToCart在ProductController中,而不是ProductsController中,则需要将动作绑定编写为
action addToCart target=“product”

好的
{{{action product.addToCart}}
导致
没有处理事件“product.addToCart”
,因为它在模型上请求该函数,我想不是
ProductController
。我确实将逻辑移到了模型中,但我不得不这样称呼它:
action addToCart target=“product”
,这对我很有效。没错。我将更新我的答案,以免混淆其他人:-)