【问题标题】:Get controller for model in Ember在 Ember 中获取模型的控制器
【发布时间】:2015-08-16 08:19:27
【问题描述】:

如果我在 Ember 中有一个模型的引用,我如何访问它的控制器?如果您在控制器中并且想要访问模型,那么就像.get("model") 一样简单,但是当您需要控制器时,反过来似乎并不成立。

【问题讨论】:

  • 所以你的第一个问题是从模型中访问控制器是非常违背 Ember 的。为了得到你需要的东西,你最好使用计算属性或助手。您想在需要访问控制器的模型中做什么? jsfiddle 在这里会有所帮助...
  • 我想从hasMany 中的给定控制器访问其他控制器中的计算属性。在这种情况下,有几个“年”的数据,并且在任何给定的年份内,您都需要访问所有其他年份内的计算属性。
  • 所以你要跨年?即一个“十年”模型有很多“年”,每个“年”都需要访问另一个“年”的计算属性?
  • 差不多!现在我在年模型上做一个forEach,但这并没有让我到达我想要的地方。也许更好的问题是在“十年”内从给定控制器访问其他模型的控制器。
  • 因此您可以在父控制器中设置“itemController”属性以将特定控制器应用于您的子模型。如果您能准确说出您要访问的内容会有所帮助,因为您可以做很多不同的事情......

标签: javascript model-view-controller ember.js


【解决方案1】:

您可以计算父模型中的组合总数,如下所示:

total: function() {
    var amount = 0;
    this.get('years').forEach(function(item) {
        amount += item.get('total');
    });
    return amount;
}.property('years.@each.total')

其中“years”是 hasMany 关系中的子模型。这将在任何子项更改值时使用@each 关键字动态更新。

查看完整的jsfiddle

【讨论】:

    猜你喜欢
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    相关资源
    最近更新 更多