Ember.js 烬:修改路线中的模型
我正在开发一个余烬应用程序,我遇到了一些问题。我必须在应用程序的某个点筛选结果,比如在控制器或视图中,如下所示: 在view.hbs,我正在{{if test.passed}}消除通过的测试…: 现在我需要在路由级别进行筛选。管线中的模型是不能编辑的,如果可以,那么它必须是路径,这是我不想要的。我怎样才能做到这一点?如何使模型可编辑?目前,我可以访问路线模型,但它无法编辑。下面是我从view.hbs文件与模型对话的方式,它是有效的Ember.js 烬:修改路线中的模型,ember.js,Ember.js,我正在开发一个余烬应用程序,我遇到了一些问题。我必须在应用程序的某个点筛选结果,比如在控制器或视图中,如下所示: 在view.hbs,我正在{{if test.passed}}消除通过的测试…: 现在我需要在路由级别进行筛选。管线中的模型是不能编辑的,如果可以,那么它必须是路径,这是我不想要的。我怎样才能做到这一点?如何使模型可编辑?目前,我可以访问路线模型,但它无法编辑。下面是我从view.hbs文件与模型对话的方式,它是有效的 {{#each model as |test|}}<br&
{{#each model as |test|}}<br>
{{test.name}}
{{/each}}
如何将参数传递给模型并对其进行编辑,以使UI也发生更改
这是我需要修改的模型。目前返回有效,但不可修改。这只是一个猜测,因为我不能100%确定您想要实现什么 我不知道这个参数是从哪里来的,但我假设有一个查询参数,比如yourroute?name=TestName。使用此选项,您可以访问该参数,如下所示:
export default Route.extend({
// if you leave that out, it'll work for the first entry, but the model will not update if you transitionToRoute with only the queryParams changed)
queryParams: {
category: {
refreshModel: true
}
},
model(params) {
// params has format of { name: "TestName" }
return this.get('store').query('test', params);
// you can of course put more complex logic in here, as you had it in controller
// f.e.:
// return this.get('store').query('test', {name: params.name, passed: true});
// or check first if you have a param at all...
}
}
和
注:
无法在控制器上设置参数以更改模型。我已经试过了…分别地。
要更改它,您必须在模板中执行{{link To routeName query params name=newName}}或TransitionRoute{queryParams:{name:'anotherName'};在你的控制器里
旁注:无论如何,将filterByTest作为一个操作是很奇怪的。这应该是一个计算属性。这只是一个猜测,因为我不能100%确定您想要实现什么 我不知道这个参数是从哪里来的,但我假设有一个查询参数,比如yourroute?name=TestName。使用此选项,您可以访问该参数,如下所示:
export default Route.extend({
// if you leave that out, it'll work for the first entry, but the model will not update if you transitionToRoute with only the queryParams changed)
queryParams: {
category: {
refreshModel: true
}
},
model(params) {
// params has format of { name: "TestName" }
return this.get('store').query('test', params);
// you can of course put more complex logic in here, as you had it in controller
// f.e.:
// return this.get('store').query('test', {name: params.name, passed: true});
// or check first if you have a param at all...
}
}
和
注:
无法在控制器上设置参数以更改模型。我已经试过了…分别地。
要更改它,您必须在模板中执行{{link To routeName query params name=newName}}或TransitionRoute{queryParams:{name:'anotherName'};在你的控制器里
旁注:无论如何,将filterByTest作为一个操作是很奇怪的。这应该是一个计算属性。如果我的理解与@Jeff相同,那么您希望根据用户通过按钮或某种方式选择的选项查询后端。在这方面,最好从国家的角度考虑。控制器将具有一个表示要表示的过滤器视图的状态,并且模型挂钩将使用该状态了解如何查询要显示的特定模型集 下面是一个演示如何使用ember cli mirage实现这一点的工作流程: 重点是我的路线定义了一个queryParams对象,该对象与@Jeff的答案相同,它指示路线在每次控制器上的category属性更改时刷新其模型
queryParams: {
category: { refreshModel: true }
},
在模型钩子中,我使用params.category值来构造正确的查询负载
model(params) {
if (params.category === 'all') {
return this.store.findAll('test');
}
let passed = params.category === 'passed';
return this.store.query('test', { 'filter[passed]': passed });
}
最后,我确保我的控制器知道类别是从URL驱动的:
queryParams: ['category'],
// A default is required to train ember on how to serialize
// the value in the URL
category: 'all',
现在,您可以更改类别值,整个路线将自动刷新,或者您可以使用指向帮助者的链接
如果我的理解与@Jeff相同,那么您希望根据用户通过按钮或某种方式选择的选项查询后端。在这方面,最好从国家的角度考虑。控制器将具有一个表示要表示的过滤器视图的状态,并且模型挂钩将使用该状态了解如何查询要显示的特定模型集 下面是一个演示如何使用ember cli mirage实现这一点的工作流程: 重点是我的路线定义了一个queryParams对象,该对象与@Jeff的答案相同,它指示路线在每次控制器上的category属性更改时刷新其模型
queryParams: {
category: { refreshModel: true }
},
在模型钩子中,我使用params.category值来构造正确的查询负载
model(params) {
if (params.category === 'all') {
return this.store.findAll('test');
}
let passed = params.category === 'passed';
return this.store.query('test', { 'filter[passed]': passed });
}
最后,我确保我的控制器知道类别是从URL驱动的:
queryParams: ['category'],
// A default is required to train ember on how to serialize
// the value in the URL
category: 'all',
现在,您可以更改类别值,整个路线将自动刷新,或者您可以使用指向帮助者的链接
Hi@AmazingDayTodayHi@AmazingDayToday查询中有参数的子路由如何?当您通过控制器执行此操作时,param从何而来?你的路线上还没有那个param吗?嗨,杰夫,谢谢你看。我没有route->model中的参数。如何将参数发送到那里,以及如何通过过滤数据来修改模型?查询中包含参数的子路由如何?当您通过控制器执行此操作时,param从何而来?你的路线上还没有那个param吗?嗨,杰夫,谢谢你看。我没有route->model中的参数。如何将参数发送到那里,以及如何通过过滤数据来修改模型?通过向控制器添加queryParams:['category'],该控制器上的任何设置也将导致触发路由上的refreshModel queryParams:['category']对于控制器,该控制器上的任何设置也将导致触发路由上的refreshModel。