我有两个适配器application.js
和exam.js
。 application.js
用作默认适配器,它将向URL http://localhost:8000/api/
发出请求。在另一种情况下,我需要向http://localhost:8000/exam/
URL发出请求。
为我建议一种可行的方法
/adapters/application.js
import DRFAdapter from './drf';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
export default DRFAdapter.extend(DataAdapterMixin,{
authorizer: 'authorizer:custom',
host: 'http"//localhost:8000',
pathForType() {
return '';
}
});
/adapters/exam.js
import DRFAdapter from './drf';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
export default DRFAdapter.extend(DataAdapterMixin, {
host: 'http://localhost:8000',
namespace: 'exam',
pathForType(){
return 'e'
}
});
/exam/controller.js
import Controller from '@ember/controller';
export default Controller.extend({
actions:{
addExam: function(id){
var examName = this.get('examname');
let list = this.store.createRecord('exammodel',{
name : examName,
owner : id
});
list.save();
},
}
});
/exam/template.hbs
<form>
{{input placeholder="exam name" type="text" value=examname required="required"}}
<button type="submit" {{action "addExam" model.id}}>Add Exam</button>
</form>
当我键入考试名称并按Submit时,它在控制台中显示一个错误,加载资源失败:服务器以400(错误请求)http://localhost:8000/api/
的状态进行了响应表示我们仍在尝试访问localhost:8000/api/
而不是localhost:8000/exam/
答案 0 :(得分:3)
在端点名称和您要创建的模型之间似乎有点命名错误。
因此,您有/adapters/exam.js
,但正在尝试createRecord('exammodel'
适配器名称必须与型号名称匹配-因此,适配器将需要命名为exammodel
或对cerateRecord的调用应使用'exam`` instead of
'exammodel'`。
希望这可以帮助您进步! :)