【问题标题】:Computed property for element in array数组中元素的计算属性
【发布时间】:2016-03-24 05:53:31
【问题描述】:

如果给定字符串存在于数组中,我正在尝试进行计算,它应该返回 true。

我的模型上有一个属性是user_id 的数组,看起来像这样

"item_bid_history": [
  562,
  697,
  13193
]

我可以获得当前登录的用户 ID,即13193

目前我有这样的东西

bidding: Ember.computed('item.item_bid_history','userService.user_id',function(){
    return Ember.$.inArray(this.get('userService.user_id'),this.get('item.item_bid_history')) > -1;
})

也许我做错了,但即使我尝试 console.log inArray 的值我总是得到 -1 即使 user_id 在某些项目的 item_bid_history 数组中

是否有一个宏可以为我执行此操作,或者我只是没有正确创建计算?

【问题讨论】:

  • 确保对数组使用[],否则在数组中添加/删除值时计算属性不会再次触发:Ember.computed('item.item_bid_history.[]', ...
  • 你为什么使用 jQuery?
  • Ember 加载在其中,所以我想只使用它,我不应该吗?
  • Ember 的 Enumerable 类(以及通过继承,数组)有一些有用的方法,这些方法更适合用于 Ember 中的非 DOM 交互。在你的情况下,你会对contains 感兴趣,所以你可以说return this.get('item.item_bid_history').contains(this.get('userService.user_id')); emberjs.com/api/classes/Ember.Enumerable.html#method_contains

标签: arrays ember.js computed-properties


【解决方案1】:

您确定吗,this.get('userService.user_id') 是 13193(数字)而不是“13193”(字符串)。 $.inArray() 不会找到它,如果它是 typeof String。

$.inArray(123, [123, 1234])
//0

$.inArray("123", [123, 1234])
//-1

【讨论】:

  • 呃,就是这样,根本没想过,希望我能告诉它不要使用===,而只使用==
  • 通常不鼓励使用==,除非您有充分的理由使用它。 "13193" 和 13193 之间的差异可能会导致一些意想不到且难以发现的错误!
猜你喜欢
  • 2019-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多