gpt4 book ai didi

ember.js - 特定于 View /模板的数据应该放在哪里?

转载 作者:行者123 更新时间:2023-12-02 06:11:41 25 4
gpt4 key购买 nike

我的主要控制人包括一系列公司,其中包含许多详细信息。

我想提供几个不同的 View ,这些 View 对这些数据进行 slice 和总结。汇总数据所需的计算非常复杂,以至于我需要在某个地方存储它们。我是不是该

  • 将数据操作方法添加到每个 View 对象或
  • 为每个 View 创建一个新的 Controller ,并将数据操作方法添加到 Controller 中。

  • 文档的“入门”部分添加了剩余待办事项的数量to the controller,因此这让我认为我应该为每个 View 创建单独的 Controller 。

    作为快速跟进:如果我使用#2,是否应该创建许多扩展我原来的CompaniesController的 Controller ,所以不必重新加载任何数据?

    最佳答案

    Add the data manipulation methods to each view object



    请不要!业务逻辑更适合于 Controller 。

    or Create a new controller for each view, and add the data manipulation methods to the controller?



    某种程度上,如果每个 Controller 的计算基本相同,则可以使用 Mixin ,如下所示:
    App.CalculationBase = Ember.Mixin.create({
    doHeavyCalculations: function() {
    ...
    return results;
    }
    ...
    });

    然后将其混合到其他 Controller 中,例如:
    App.MyController = Ember.ObjectController.extend(App.CalculationBase, {
    // here you can then call this.doHeavyCalculations()
    });

    App.MyOtherController = Ember.ArrayController.extend(App.CalculationBase, {
    // here you can then call this.doHeavyCalculations()
    });

    但是,根据设置的外观,您还可以创建带有烤制混合的 itemController

    例如,假设在模板中您正在遍历 CompaniesController内容,如下所示:
    {{#each company in model}}
    {{company}}
    {{/each}}

    然后,itemController方法将为每个公司项目实例化一个单独的 CompanyController
    App.CompaniesController = Ember.ArrayController.extend({
    itemController: 'company'
    });

    App.CompanyController = Ember.ObjectController.extend({
    doHeavyCalculations: function() {
    ...
    return results;
    }
    ...
    });

    希望能帮助到你。

    关于ember.js - 特定于 View /模板的数据应该放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17729003/

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