Ash*_*n S 7 ember.js ember-data
我想知道如何在其余的api中创建一个具有嵌套路径的资源.
例如,给定员工资源的终点,/ companies/{company}/employees/{employee}
如何创建员工记录.我创建了一个员工模型,但请求将进入顶级/.发送带有员工数据的发布请求到/.
我应该覆盖适配器上的pathForType()吗?
如果您正在谈论 ember 路由器路径,那么我就是这样做的:
App.Router.map(function () {
this.resource('companies', {path: 'companies/:company_id'}, function () {
this.resource('employees', {path: 'employees/:employee_id'});
});
});
Run Code Online (Sandbox Code Playgroud)
这会创建类似以下内容的内容:index.html/#/companies/{company}/employees/{employee}
这将创建嵌套在该路由中的 CompaniesRoute 和EmployeesRoute。如果您进行了设置,则可以在 ember 检查器中很好地查看它。
Ember将首先进入CompansRoute,然后进入EmployeesRoute。
请参阅此处的路由文档
如果您正在谈论将数据发送到 REST API 服务器,那么一种解决方案是覆盖 buildURL,例如:
App.Store = DS.Store.extend({
adapter: DS.RESTAdapter.extend({
host: "http://whatever",
buildURL: function (type, id) {
var url = [];
url.push(this.urlPrefix());
url.push("companies/" + App.companyID + "/employee/" + App.employeeID );
url.push(this.pathForType(type));
if (id) {
url.push(id);
}
return url.join('/') + ".json";
}
})
});
Run Code Online (Sandbox Code Playgroud)
注意 在调用 buildURL 之前必须设置 App.companyID。我会在 CompanyRoute 中执行此操作并将其设置为这样
model: function (params) {
App.set('companyID', params.company_id);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
453 次 |
| 最近记录: |