通过使用“已发布”属性对列表进行排序,我只显示已发布的文章。
现在,当我编辑文章并将其从“已发布”设置为“草稿”时,即使我在控制器中编写了过滤器,我也回到列表中,看到了“草稿”文章。
我如何保存
article.set('isPublished', true);
article.save();
this.transitionToRoute('article.list');
路线:
model() {
return this.get('store').findAll('articles');
}
控制器:
articleSorted: computed.filterBy('model', 'isPublished', true),
在刷新页面之前,有些文章仍然是“草稿”,而当我刷新它们时是“已发布” ...只要转到另一页并返回列表,或者进行浏览器刷新就足以正确列出“已发布”的文章,从而解决了我的问题。
我应该在哪里寻找可以解决我的问题而无需刷新? 谢谢
答案 0 :(得分:0)
首先尝试将变量设置到模型中,然后创建 DataRow row = selectedDataRowView.Row;
dataTable1.ImportRow(row);
。喜欢
model.save()
答案 1 :(得分:0)
根据您的问题和评论,我在这里做出最佳猜测。拥有完整的路由和控制器代码会有所帮助,因此,如果这样做没有帮助,我将需要该信息。
基于:
只需转到另一页并返回列表,或者刷新浏览器就足以正确地仅列出“已发布”的文章,从而解决我的问题。
我猜想加载文章时会出现问题,否则在isPublished
更改时,不会重新计算计算出的属性。
我会尝试加载所有内容并将其过滤到计算属性中。可能看起来像:
import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
export default Route.extend({
store: service(),
model() {
return this.store.findAll('article');
}
});
import { computed } from '@ember/object';
import Controller from '@ember/controller';
export default Controller.extend({
articles: computed('model.@each.isPublished', function () {
return this.model.filterBy('isPublished');
}),
});
这将在模型挂钩中加载所有文章,然后在计算属性中处理过滤。当任何一篇文章的isPublished
属性发生变化时,该列表就会更新。
更新延迟的原因可能是由于您保存更改的方式。运行.save()
时,这是一个异步操作,您需要在转换之前等待它。试试:
actions: {
async publishArticle(article){
article.set('isPublished', true);
await article.save();
this.transitionToRoute('article.list');
}
}
哪个将等待诺言首先解决。