2013-10-22 60 views
2

我是EmberJs的新手,我在Ember的Adapter中沒有清楚地理解。我只是在我的App.Js中嘗試了這個ember adapter,並且我得到了這個錯誤(斷言失敗:您試圖設置adapter屬性到DS.Adapter的實例,它應該是名稱或工廠)。我燼在App.js代碼:EmberJS中的RESTAdapter

//Store 
App.Adapter = DS.RESTAdapter.extend(); 
App.Store = DS.Store.extend({ 
    revision: 12, 
    adapter: App.Adapter.create() 
}); 
//Models 
App.Product = DS.Model.extend({ 
    name: DS.attr('string'), 
    description: DS.attr('string'), 
    price: DS.attr('number') 
}); 

// Products Route 
App.ProductsRoute = Ember.Route.extend({ 
    model: (function() { 
     return this.store.find('Product'); 
    }) 
}); 
return App; 

回答

1

定義店這樣

App.Store = DS.Store.extend({ 
    revision: 12, 
    adapter: App.Adapter 
}); 

沒有建立()。

1

適配器的主要用途是根據一些約定來完成數據的序列化和deserailzation,如構建url來發布或獲取數據,然後從響應中構建實際對象。由余燼數據模型使用的默認適配器是Rest適配器。

看到

http://emberjs.com/guides/models/the-rest-adapter/ 更多細節

要使用比其他適配器等不同的轉接器,你可以像

Storm.Store = DS.Store.extend({ adapter: '_ams', });

0

嘗試指定其名稱:

App.ApplicationAdapter = DS.RESTAdapter.extend(); 

這對我的作品

4

我想你誤會你設置的方式,並配置適配器。

// 
// Application-wide adapter, everything will use this unless you override it 
// 

App.ApplicationAdapter = DS.RESTAdapter.extend({ 
    host: 'https://api.example.com' 
}); 

// 
// Product model, will use ApplicationAdapter 
// 

App.Product = DS.Model.extend({ 
    name  : DS.attr('string'), 
    description : DS.attr('string'), 
    price  : DS.attr('number') 
}); 

// 
// Invoice model, will use fixtures, so specify a different adapter 
// 

App.InvoiceAdapter = DS.FixtureAdapter.extend({ /* options */ }); 

App.Invoice = DS.Model.extend({ 
    name : DS.attr('string'), 
    amount : DS.attr('number') 
}); 

//  
// Routes, these should work as expected 
// 

App.ProductRoute = Ember.Route.extend({ 
    model: function(params) { 
    return this.store.find('product', params.id); 
    } 
}); 

App.ProductsRoute = Ember.Route.extend({ 
    model: function() { 
    return this.store.find('product'); 
    } 
}); 

App.InvoicesRoute = Ember.Route.extend({ 
    model: function() { 
    return this.store.find('invoice'); 
    } 
}); 

return App; 

灰燼就會知道哪些型號/路由/等基於自己的名字使用 - 看到http://emberjs.com/guides/concepts/naming-conventions/的細節。