【问题标题】:Ember - this.get(one from an array)Ember - this.get(来自数组的一个)
【发布时间】:2015-02-21 00:06:54
【问题描述】:

所以我有两个版本的这个问题,一个有点简化,一个有点像我想要达到的目标。

  1. 我有一个“学生”模型和一个“分数”模型。 “学生”有很多“分数”。在“学生”控制器上,我试图将计算属性“分数”设置为等于这些“分数”中的指定一个。

有什么方法可以传入另一个参数(例如,返回数组中的第一个参数)?

在控制器/学生中

    score: function(){
                return this.get('scores', 1);
           }.property('scores')
  1. 这里有一个额外的维度。 “分数”模型也属于“客观”模型。我可以根据所选目标的 id 在我的“学生”控制器上设置“分数”属性吗?

    -------------------------------------------更新---------------------------------------------- ------------

恐怕我还是被卡住了!我一直试图弄清楚更多,但无济于事。我将概述一些代码,希望能让我的问题更清楚。

我的模型

学生

scores:   DS.hasMany('score', {async: true}),  
name:     DS.attr('string')

目标

name:     DS.attr('string'),
scores:   DS.hasMany('score', {async : true})

分数

scoreResult:  DS.attr('number'),
objective:    DS.belongsTo('objective', {async: true}),
student:      DS.belongsTo('student', {async: true})
  1. 所以我真正想做的是在“student”控制器中将“score”属性设置为“scoreResult”整数,并根据分数模型中的objective_id 值进行过滤。

所以在其他地方,我可以选择一个目标,获取它的objective_id,然后使用它来将学生控制器的“分数”设置为相应目标的分数。

我希望这是有道理的。我真的很难找到任何教程/指导,并努力为自己弄清楚。非常感谢任何帮助。

【问题讨论】:

  • 对于第 2 部分,您应该包含模型、路由和控制器的代码。此外,不清楚您所说的“选择”目标是什么意思。它是如何选择的?也许也包括模板代码。
  • 感谢您的回复。我会有点慢回复,我会尝试找出其他一些事情,然后再回到这个。谢谢
  • 我有空再看看你的问题。同时,如果您可以创建一个 jsbin,它将更容易理解您要做什么,并找到问题。
  • @rjoxford 您是否要根据objective_id 获得学生的分数?

标签: ember.js


【解决方案1】:
return this.get('scores.firstObject');

http://emberjs.com/api/classes/Ember.ArrayProxy.html

【讨论】:

  • 恐怕这行不通。我已经尝试了几乎所有的语法变化。我能得到的最好的结果是“未定义”、“”或。只是似乎无法解决这个问题,或找到任何文档。非常感谢您的帮助。
【解决方案2】:

回答额外参数的问题。您可以使用类似这样的方法添加其他参数

score : Ember.computed('first','second','third', function(){
      //now use all three properties to do anything here
      // you can use any number of properties
      return this.get('model').filterBy('first',A);
});

另一种具有相同含义的语法将是

score : function(){

}.property('first','second','third')

【讨论】:

  • 我理解这是一种计算计算属性的方法。我正在尝试将属性设置为相关模型上的属性值。我可以设置模型本身的属性,这似乎是导致问题的一对多关系。
猜你喜欢
  • 2019-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-12
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 2017-01-19
相关资源
最近更新 更多