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

时间:2015-01-05 17:45:11

标签: javascript ember.js datatables ember-data

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

我正在使用ember-data根据路由参数使用webmethods从asp代码隐藏中获取数据。然后我会使用该数据创建一个包含数据表的表。但是,当我更改路径时,更改了数据并因此更改了html,数据表将添加行,但它不会删除旧行。此外,没有任何功能可用于新行,每当我排序时,它都会删除新数据。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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中包含的初始化代码被运行。