在 Ember 视图参数更改上运行代码

Run code on Ember view parameter change

本文关键字:运行 代码 Ember 视图 参数      更新时间:2023-09-26

一周前,我在emberjs和DataTables上遇到了问题。

我使用余烬数据使用基于路由参数的网络方法从 asp 代码隐藏中获取数据。然后,我将使用该数据创建一个包含数据表的表。但是,当我更改路由时,这会更改数据并因此更改 html,数据表将添加行,但不会删除旧行。此外,没有任何功能适用于新行,每当我进行排序时,它都会删除新数据。

如果有人有比我发布的答案更好的答案,请告诉我。

我看了很多关于这个主题或类似主题的问题;然而,所有的解决方案都是黑客或昂贵的性能。所以我找到了自己的。

它并不完美;我希望余烬能够基于此实现一个事件。

我最初添加了一个控制器,用于在我的应用程序视图中导航。更改事件大致如下所示:

paramsChanged: function () {
    if (this.type && this.filingType.value && this.year && this.period) {
        this.transitionToRoute('application');
        Ember.run.next(this, function () {
            this.transitionToRoute(this.type.value, this.year, this.period);
        });
        //console.log('persist');
    }
}.observes('type', 'year', 'period')

这是将路由更改为应用程序(基本上删除子视图),然后移动到我接下来需要的任何路由。

性能成本虽然未经测试,但应该可以忽略不计。无论如何,我都需要运行代码来创建视图,并且我已经在应用程序中。我通过转换到索引来破坏一点额外的东西,然后在下一个运行循环中重新创建子视图,导致运行 didInsertElement 中包含的初始化代码。