gpt4 book ai didi

javascript - 如何获取 Controller 内的 hasMany 关系数据数组?

转载 作者:行者123 更新时间:2023-11-28 08:35:35 25 4
gpt4 key购买 nike

我的模型关系定义如下

App.Person = DS.Model.extend({
name: DS.attr(),
imageUrl: DS.attr(),
bills: DS.hasMany("bill", { async: true}),
});

App.Bill = DS.Model.extend({
description: DS.attr(),
amount: DS.attr(),
person: DS.belongsTo("person")
});

如何获取 Controller 内所有人的账单并将其传递给 Controller ​​以便我可以显示所有账单?一种解决方案是在 Handlebars 模板内部进行迭代。但我需要获取 Controller 本身的数据并将它们用作模板中的属性?

App.DashboardController = Ember.ArrayController.extend({
bills: function(){
return /*Bills here*/;
}.property()
});

最佳答案

如果我理解正确,并且 App.Person 实例是您的 DashboardRotue 的模型,那么我不确定您想要什么是可能的目前有。

作为一点背景信息,Ember.js 中的 Controller 装饰模型。通俗地说,这意味着所有属性都来自 Controller ,即使 Controller 必须向模型询问它们。因此,如果您向 Controller 询问 bills 属性,它会发现它没有该属性,而是从模型中获取该属性。因此,如果您想要的只是那个人的账单,则根本不需要在 Controller 中声明任何内容。您可以在模板中执行此操作,效果会很好:

<ul>
{{#each bills}}
<li>{{amount}} - {{description}}</li>
{{/each}}
</ul>

但如果我理解正确的话,您似乎想要为所有人的人开账单。这有点棘手,但仍然是可能的。如果您想要整个系统中的所有账单(我认为是相同的),最简单的方法是获取所有账单并将它们用作ArrayController<中的模型.

model: function() {
return this.store.find('bill'); // Find all bills
}

您的模板将如下所示:

<ul>
{{#each}}
<li>{{amount}} - {{description}}</li>
{{/each}}
</ul>

但是,如果您想为所有人支付账单,那么您的工作就已经完成了。您需要执行与上面相同的操作,仅获取所有 person 而不是 bill。然后,您需要 Controller 中的计算属性来加入所有人的所有账单。但是您无法嵌套 @each 观察者,您的属性将无法正确更新。如果这确实是您的用例,我强烈建议您重新考虑。如果你真的需要它,我可以帮助你,但同样,这并不容易。

关于javascript - 如何获取 Controller 内的 hasMany 关系数据数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21253852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com