【问题标题】:filterProperty in Emberjs with a property from a bindingEmberjs 中的 filterProperty 具有来自绑定的属性
【发布时间】:2013-08-22 20:04:31
【问题描述】:

我在 emberjs 中工作,我正在尝试使用 filterProperty,以便能够在车把中调用 {{#each messageFromGroup}}。但是,在尝试基于group.id 进行过滤时,以下代码不起作用。但是(例如)在当前上下文中(在函数 messageFromGroup 中)console.log @get 'group.id 将返回一个数字(例如 2)。代码:

App.MessagesController = Ember.ArrayController.extend

  group: null

  needs: 'group'

  groupBinding: "controllers.group"



  messageFromGroup: (->

      return @get('model').filterProperty 'to', @get('group.id')

  ).property 'model.@each.to'

注意:如果我按以下方式编写代码,它可以工作,这让我相信查找 @get group.id 是问题所在。

App.MessagesController = Ember.ArrayController.extend

  group: null

  needs: 'group'

  groupBinding: "controllers.group"



  messageFromGroup: (->

      return @get('model').filterProperty 'to', 2

  ).property 'model.@each.to'

【问题讨论】:

  • 可能来自group.id 的值最初为空,并且更新后,但计算属性不知道这一点。尝试使用属性('model.@each.to', 'group.id'),在messageFromGroup
  • 我刚试过,还是不行。我不完全理解绑定的行为,但我有点确定(不是很确定)因为 console.log @get 'group.id' 在该上下文中工作,所以值不为空。然而,弄乱财产可能是关键

标签: ember.js coffeescript


【解决方案1】:

我猜groupBinding 是为了方便访问GroupController 吗?我不知道,为什么这不起作用,但在这种情况下我不会使用绑定。我会使用别名。因此请试试这个:

App.MessagesController = Ember.ArrayController.extend({
   ...
   group : Ember.computed.alias("controllers.group")
});

编辑:我刚刚看到这不是问题,因为您说 group.id 的日志语句工作正常。那么唯一的其他问题可能是 @get('group.id') 正在返回一个字符串,但您需要一个数字。

【讨论】:

  • 是的 :) 由于某种原因它返回了一个字符串。只需将其强制为int。考虑到该值最初是一个 int,这很奇怪。知道为什么会发生这种情况吗?
  • 我认为很难猜测,必须查看数据流并检查 group.id 何时设置以及从现在开始会发生什么。也许你可以使用 group.id 上的观察者来检查那里发生了什么:-)
猜你喜欢
  • 2013-05-31
  • 1970-01-01
  • 2015-03-10
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 2018-11-29
相关资源
最近更新 更多