【发布时间】:2018-04-19 20:59:30
【问题描述】:
我正在开发 Ember 应用程序,但遇到了问题。我必须在应用程序的某个点过滤掉结果,比如在控制器或视图中,如下所示:
view.hbs 我正在消除{{#if test.passed}}... 通过的测试:
{{#each tests as |test|}}<br>
{{#if test.passed}}
{{test.name}}
{{/if}}
{{/each}}
我可以在最初加载并可以在输入字段中过滤掉的控制器上执行此操作:
import Controller from '@ember/controller';
export default Controller.extend({
actions: {
filterByTest: function (param) {
if (param !== '') {
return this.get('store').query('test', { name: param }).then((filteredTests) => {
return { query: param, tests: filteredTests.filterBy('passed', true) };
});
} else {
return this.get('store').findAll('test').then((tests) => {
return { query: param, tests: tests.filterBy('passed', true) };
});
}
}
}
});
现在我需要在route 级别进行过滤。 model() 中的 route 是无法编辑的,如果可以,那么它必须是我不想要的路径。我怎样才能做到这一点?如何使模型可编辑?目前我可以进入路线模型,但无法编辑。这是我从view.hbs 文件中与模型交谈的方式,它有效。
{{#each model as |test|}}<br>
{{test.name}}
{{/each}}
请看下面将文件返回到上面view.hbs模板的模型。再次,它正在工作:
import Route from '@ember/routing/route';
export default Route.extend({
model() {
return this.get('store').findAll('test').then(tests => {
return tests('passed', true);
})
}
});
如何将参数传递给模型并对其进行编辑,以便我的 UI 也得到更改?
这是我需要修改的模型。目前return 有效,但不可修改。
【问题讨论】:
-
查询中有参数的子路由呢?当您通过控制器执行此操作时,param 来自哪里?你的路线中没有那个参数吗?
-
嗨@Jeff,感谢您的关注。我在 route->model 中没有参数。如何将参数发送到那里以及如何通过过滤掉数据来修改模型?
标签: ember.js