Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 路由模型钩子中的ember数据实时数组排序_Ember.js_Ember Data - Fatal编程技术网

Ember.js 路由模型钩子中的ember数据实时数组排序

Ember.js 路由模型钩子中的ember数据实时数组排序,ember.js,ember-data,Ember.js,Ember Data,在余烬路线的模型挂钩中,以下各项可以正常工作: model: function () { return this.modelFor('foo').get('bar'); } 在余烬数据的支持下,我可以在其他地方删除一些foo的酒吧,它将自动更新(live array) 现在,我希望对其进行排序(以及子路由中的用户,因此我必须在路由中进行排序,而不是在控制器中) 。。。只在第一次做这项工作,因为我正在失去更新 有没有一种方法可以在线写入自动更新排序?解决此问题的余烬方法是什么?您可以为您

在余烬路线的模型挂钩中,以下各项可以正常工作:

model: function () {
    return this.modelFor('foo').get('bar');
}
在余烬数据的支持下,我可以在其他地方删除一些foo的酒吧,它将自动更新(live array)

现在,我希望对其进行排序(以及子路由中的用户,因此我必须在路由中进行排序,而不是在控制器中)

。。。只在第一次做这项工作,因为我正在失去更新


有没有一种方法可以在线写入自动更新排序?解决此问题的余烬方法是什么?

您可以为您的模型创建一个余烬对象,该对象具有作为排序数据的计算属性

model: function () {
    return this.modelFor('foo').get('bar')
       .then(function (data) {
            return Ember.Object.extend({
                arrangedData: Ember.computed.sort('model', 'props'),
                props: ['baz:asc']
            }).create({ model: data });
       });
},

Ember.Object.extend零件可能应该提取到某个位置,以便在其他管线中重用。

您可以为模型创建一个Ember对象,该对象具有作为排序数据的计算属性

model: function () {
    return this.modelFor('foo').get('bar')
       .then(function (data) {
            return Ember.Object.extend({
                arrangedData: Ember.computed.sort('model', 'props'),
                props: ['baz:asc']
            }).create({ model: data });
       });
},

Ember.Object.extend部分可能应该提取到某个地方,以便在其他路径中重复使用。

根据Gaurav的答案回答我自己的问题:

 model: function () {
    return this.modelFor('foo').get('bar')
        .then(function (data) {
            return Ember.ArrayProxy.extend({
                arrangedContent: Ember.computed.sort('content', 'props'),
                props: ['baz:asc']
            }).create({
                content: data});
        });
},

根据Gaurav的回答,回答我自己的问题:

 model: function () {
    return this.modelFor('foo').get('bar')
        .then(function (data) {
            return Ember.ArrayProxy.extend({
                arrangedContent: Ember.computed.sort('content', 'props'),
                props: ['baz:asc']
            }).create({
                content: data});
        });
},

谢谢,这让我想到了正确的方向。道具必须是阵列才能工作。此外,我还需要在模板中编写
{{model.arrangedData.baz}
。我已经使用ArrayProxy扩展了这一点,并添加了我自己的答案。谢谢,这让我朝着正确的方向思考。道具必须是阵列才能工作。此外,我还需要在模板中编写
{{model.arrangedData.baz}
。我通过使用ArrayProxy扩展了这一点,并添加了我自己的答案。谢谢,在这里工作。有没有较短的方法?似乎有很多余烬的样板。我希望类似于
this.store.find('post').sortBy(['baz:asc'])
的东西
find
返回一个承诺,所以您必须使用
等待它。然后(…)
。现在,您已经非常接近我的问题中显示的代码,它只在第一次使用时才起作用。我不知道是否有人会用
sortBy
替换返回一个活动数组。显然,你可以自己实现。到目前为止,我只在两个地方需要这个构造,所以我没有那样做。谢谢,在这里工作。有没有较短的方法?似乎有很多余烬的样板。我希望类似于
this.store.find('post').sortBy(['baz:asc'])
的东西
find
返回一个承诺,所以您必须使用
等待它。然后(…)
。现在,您已经非常接近我的问题中显示的代码,它只在第一次使用时才起作用。我不知道是否有人会用
sortBy
替换返回一个活动数组。显然,你可以自己实现。到目前为止,我只在两个地方需要这个构造,所以我没有这样做。