在控制器中检索模型的属性

时间:2015-06-03 20:04:52

标签: ember.js ember-data

我有一个包含单个数据的模型,但它在数组中。我想从我的控制器内部检索这些数据并使其成为控制器的属性,以便我可以在其他控制器中使用它。例如:

prog

基本上我想获得整个相关模型,以便我可以访问它的数据。我必须使用什么语法?谢谢

3 个答案:

答案 0 :(得分:0)

也许这会有所帮助: Getting the model inside a controller emberjs

基本上,模型是异步加载的。一旦加载了数据,您就可以使用this.get('model').then(function(data) { ... })来处理数据。虽然我建议使用Ember.computed宏,如.mapBy:

currentsubuser: Ember.computed.mapBy('model', 'subuserproperty')

http://emberjs.com/api/classes/Ember.computed.html#method_mapBy

答案 1 :(得分:0)

我不是100%确定你的目标是什么,但是从另一个控制器你可以做someAttribute: Ember.computed.alias('controllers.someController.model')

除非您以某种方式对其进行转换,否则无需在控制器中创建任何提供模型数据的本地属性。

您需要在该控制器中指定一个needs来引用您从中提取模型数据的那个(调整您的全局样式javascript

export default Ember.Controller.extend({
  needs: ['someController'],
  someAttr: Ember.computed.alias('controllers.someController.model')
})

我知道这样可以正常工作,但这并不是说你应该做任何这些。而且,显然,确保模型数据在您期望的原始控制器中。验证这一点的一种快速方法是将日志助手扔进您的手柄,如{{log model}}或在浏览器中使用Ember Inspector。

更新:根据您的评论,这将有效

export default Ember.Controller.extend({
  currentSubUser: Ember.computed.readOnly('model.firstObject'),
})

然后,在您的模板中,您可以使用{{ currentSubUser.foo }}

答案 2 :(得分:0)

无需将模型存储到属性中。

检查dependencies between controllers

但要回答你的问题,请这样做:

在想要检索** CurrentsubuserController **模型的控制器上,您可以定义此控制器的需求:

export default Ember.ArrayController.extend({
    needs: "currentsubusercontroller"
    currentSubUserController: Ember.computed.alias("controllers.CurrentsubuserController")
});

然后您可以使用this.get('currentSubUserController.model')

访问此控制器及其模型