Vin*_*nay 8 ember.js ember-model ember-cli
也许使用常规的Ember应用程序,将所有代码放在app.js中对我来说会更容易.但由于我使用的是Ember CLI,因此无法在我的路线中访问我的模型.我还在尝试学习如何使用Ember CLI,所以请帮帮我.
因为我只想激活AJAX调用并在我的UI上渲染数据,所以我下载并将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
Run Code Online (Sandbox Code Playgroud)
这是我只关注问题的实际项目结构的更简单的表示.正如Ember Model文档中提出的,我将以下代码添加到我的Customers模型(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();
Run Code Online (Sandbox Code Playgroud)
请注意,我必须执行"export default"而不是"App.Customers = Ember.Model.extend ...".这是Ember CLI惯例.因此,当我尝试访问我在Customers Route中创建的模型时,我收到错误"加载路径时出错:ReferenceError:App未定义"..
客户路线代码:
export default Ember.Route.extend({
model: function () {
App.Customers.find();
},
actions: {
addnew: function(){
//logic of saving edited customer
alert('customer created!');
}
}
});
Run Code Online (Sandbox Code Playgroud)
我试过this.model() - 返回supperWrapper类型的对象和this.modelFor() - 返回null.
请建议如何在路线中处理我的模型,以便我可以执行Ember Model开箱即用的CRUD操作.
谢谢!
小智 16
我建议你将模型的文件名更改为单数customer.js.
如果要访问路径文件中的模型类,则必须导入模型.由于Ember CLI使用ES6模块语法,因此您无法/不应直接访问App对象上的任何内容.这应该通过import语句或Ember内部通过解析器完成.
import Customer from "../models/customer";
Run Code Online (Sandbox Code Playgroud)
现在您可以在模型钩子中使用它.您的示例代码中还有另一个错误,您必须从查找调用返回承诺.
model: function () {
return Customer.find();
},
Run Code Online (Sandbox Code Playgroud)
我很好奇为什么你选择Ember Model而不是Ember Data,因为在这个例子中你需要更少的Ember Data代码,它更像是Ember方式AFAIK.
| 归档时间: |
|
| 查看次数: |
6563 次 |
| 最近记录: |