我无法理解如何在视图和控制器中使用ember-data模型。我正在使用 emberjs 1.2.0 + ember-data 1.0.0-beta.2 编写应用程序。我为自己的(疯狂)API编写了自己的自定义RESTAdapter和Serializer。一切似乎都很好 - >我可以在我的模板中使用模型的数据等等。
我将尝试解释应用程序的基本功能。例如,我有 UserModel 与用户集合,而不是我有一个用户列表和用户详细信息的模板,您可以在其中编辑配置文件等。那里的一切都很干净。 然后我有另一个模型调用位置,其中最后一个位置与用户相关联。这个模型我在我的模板中使用谷歌地图,我需要使用这个模型(在我的mapView中)在地图中创建注释。另一个例子是reportModel,其中包含用户活动的日期统计信息。这个模型我需要用这些统计数据构建dc.js图表。没有ember-data,我基本上在Route的模型钩子中设置ajaxRequest,而不是在控制器或视图中设置get数据。我正在尝试使用ember-data作为app的其余部分,但是当get('model')返回DS.Model的类时,我真的不知道如何在View或控制器中获取模型的数据。
一点点代码:
App.DashboardRoute = App.AuthenticatedRoute.extend({
model: function() {
return this.store.find('daystat');
},
setupController: function(controller, model) {
controller.set('content', model);
}
});
App.DashboardView = Ember.View.extend({
didInsertElement: function() {
// load model from controller
var model = this.get('controller.content');
console.log(model);
}
});
控制台登录仪表板路线:
Class
__ember1391503821834: "ember608"
__ember1391503821834_meta: Meta
_oldWillDestroy: function superWrapper() {
_super: undefined
arrangedContent: (...)
content: (...)
get content: function () {
set content: function (value) {
isLoaded: true
isUpdating: false
store: Class
toString: function () { return ret; }
type: App.Daystat
willDestroy: function superWrapper() {
__proto__: Object
在使用数据推送api响应之前重新启动序列化程序日志我想在仪表板视图中使用它:
[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, nextObject: function, firstObject: undefined, lastObject: undefined, contains: function, getEach: function…]
单个对象(日期)包含如下内容:
date: "2014-01-18"
id: 4
orders_count: 0
orders_sum: 0
sales_count: 0
sales_sum: 0
visits_count: 0
__proto__: Object
我的问题是:如何在我的视图或控制器中使用Ember-Data Models,就像我在手柄模板中一样?
答案 0 :(得分:1)
好的,经过谷歌搜索和测试一段时间后,我对解决方案有了基本的了解:
首先,这可能有助于处理类似问题的任何人: Ember: How to set controller model for use in select view
在我的观点中,我正在处理集合,所以我只是做了一些日志测试,自定义应用程序代码,如下所示:
App.MapController = Ember.ArrayController.extend({
getLocations: function() {
var model = this.get('content');
model.forEach(function(item) {
console.log(item.get('id'));
});
}
});
App.MapView = Ember.ContainerView.extend({
elementId: 'map-canvas',
tagName: 'div',
attributeBindings: ['style'],
map: null,
didInsertElement: function() {
var mapOptions = {
center: new google.maps.LatLng(49.678293, 15.446777),
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(this.$().get(0),mapOptions);
this.set("map",map);
// Get controller
var controller = this.get('controller');
controller.getLocations();
}
});
记录返回ID:
2 combined-scripts.js:357
3 combined-scripts.js:357
...
所以是的,你可以通过在每个属性上使用get方法来获得它。