对于我来说,也许在一个包含所有代码的app.js文件中处理普通的Ember应用程序会更容易。但是由于我正在使用Ember CLI,我很难在我的路由中访问模型。我仍在努力学习如何使用Ember CLI,请帮帮我。
因为我只想发出AJAX调用并获取数据以呈现在我的用户界面上,所以我下载并将Ember Model库添加到了我的项目中。我不认为需要使用Ember Data。这是我参考的Ember Model文档:https://github.com/ebryn/ember-model#example-usage。话虽如此,以下是Ember CLI建议的目录结构:
|-app
|-controllers
| |-customers.js
|-models
| |-customers.js
|-routes
| |-customers.js
|-templates
| |-customers.hbs
|-app.js
|-index.html
|-main.js
|-router.js
这是一个简化版的项目结构,我只是为了集中精力解决问题。根据Ember Model文档的建议,我将以下代码添加到我的客户模型(model\customers.js)中:
export default Ember.Model.extend({
nameid: attr(),
firstname: attr(),
middlename: attr(),
lastname: attr(),
prefixname: attr(),
suffixname: attr()
});
this.url = "http://restapi/api/customers";
this.adapter = Ember.RESTAdapter.create();
注意,我必须执行"export default"而不是"App.Customers = Ember.Model.extend..."。这是Ember CLI的惯例。因此,当我尝试访问我在Customers Route中创建的模型时,会出现错误"Error while loading route: ReferenceError: App is not defined"。
客户路由代码:
export default Ember.Route.extend({
model: function () {
App.Customers.find();
},
actions: {
addnew: function(){
//logic of saving edited customer
alert('customer created!');
}
}
});
我尝试了 this.model() - 返回一个 supperWrapper 类型的对象,以及 this.modelFor() - 返回 null。
请建议如何在路由中获取我的模型句柄,以便我可以执行 Ember Model 提供的开箱即用的 CRUD 操作。
谢谢!