我在一个模型上有一个计算属性,为了计算这个属性,我需要从控制器中获取一个属性(不是管理模型的控制器)。
我知道有 needs:
但这只是在控制器级别上。
如何从管理模型的控制器以外的控制器中获取Ember的属性?
我尝试按照[问这个问题的人][1]所建议的那样进行格式化,但没有成功。
所以,我尝试使用计算属性在模型上进行格式化,但要计算该属性,我需要从控制器中获取另一个属性。
非常感谢任何帮助! 谢谢!
注:我正在使用EmberData来管理模型。
编辑:
为了澄清我想做什么,我设置了一个示例,以一种普遍的方式展示了问题:
该示例应用程序允许您输入数字、存储它们并在列表中显示它们。 您还可以输入一个“转换因子”,它不会改变模型数据本身,但会改变模板上的呈现方式。 假设您输入数字2,2将保存在模型中,但当它在列表中显示时,它会使用您之前输入的转换因子进行“格式化”,并在模板中显示计算出的值。 问题是我想要格式化的值存储在不同的控制器上。 我已经尝试了以下方法:
方法1:
在ArrayController上计算属性 - 使用needs:
在控制器中遍历并获取值
-->jsfiddle
我遇到的问题:
ArrayController似乎会出错,模板呈现的效果就像没有存储记录一样(注意:该示例使用本地存储,因此创建一些记录并取消注释ArrayController上的计算属性,您将看到它最初按预期工作并显示输入的记录)。方法2:
在模型本身上计算属性
-->jsfiddle
我遇到的问题:
我不知道如何在模型内部获取控制器的属性- 方法3:
Handlebars Helper和控制器上的needs:
1)在控制器上定义一个计算属性(处理模型),以从另一个控制器中获取所需的值
2)创建一个handlebars helper,并传递来自模型和控制器的值,并返回计算出的值
-->jsfiddle(您可以在评论中找到第三个jsfiddle的链接,因为我还没有足够的声望点)。
我遇到的问题:
而不是显示格式化数字,我在呈现的模板中得到“NaN”值。
如果有人有解决此问题的想法或可以指导我正确的方向,那将是很好的。非常感谢您的帮助!感谢您的时间!