![](/img/trans.png)
[英]How to access a route of an Ember application built with Ember-CLI from custom HTML?
[英]How to access Ember Model from the Route in 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
這是我只關注問題的實際項目結構的更簡單的表示。 正如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();
請注意,我必須執行“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!');
}
}
});
我試過this.model() - 返回supperWrapper類型的對象和this.modelFor() - 返回null。
請建議如何在路線中處理我的模型,以便我可以執行Ember Model開箱即用的CRUD操作。
謝謝!
我建議你將模型的文件名改為單數,例如customer.js
。
如果要訪問路徑文件中的模型類,則必須導入模型。 由於Ember CLI使用ES6模塊語法,因此您無法/不應直接在App
對象上訪問任何內容。 這應該通過import語句或Ember內部通過解析器完成。
import Customer from "../models/customer";
現在您可以在模型鈎子中使用它。 您的示例代碼中還有另一個錯誤,您必須從查找調用返回承諾。
model: function () {
return Customer.find();
},
我很好奇為什么你選擇Ember Model而不是Ember Data,因為在這個例子中你需要更少的Ember Data代碼,它更像是Ember方式AFAIK。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.