带有Promiss访问权限的ember ajax调用将生成模板和控制器
我正在通过ajax请求调用服务器以获取一些数据,我使用了一个承诺。虽然我的模板会在数据返回后自动更新,但我很不幸地访问了控制器中的数据,因为我不知道它确切的存在时间 为了解决这个问题,我可以在控制器中进行额外的ajax调用,以获得相同的数据,但这感觉很糟糕。是否有更好的方法知道何时访问控制器中的数据?作为解决方法,我尝试调用需要didInsertElement上数据的函数,但没有解决问题带有Promiss访问权限的ember ajax调用将生成模板和控制器,ajax,ember.js,promise,Ajax,Ember.js,Promise,我正在通过ajax请求调用服务器以获取一些数据,我使用了一个承诺。虽然我的模板会在数据返回后自动更新,但我很不幸地访问了控制器中的数据,因为我不知道它确切的存在时间 为了解决这个问题,我可以在控制器中进行额外的ajax调用,以获得相同的数据,但这感觉很糟糕。是否有更好的方法知道何时访问控制器中的数据?作为解决方法,我尝试调用需要didInsertElement上数据的函数,但没有解决问题 App.ActiveDataSet = Ember.Object.extend({ progress:
App.ActiveDataSet = Ember.Object.extend({
progress: 0
});
App.ActiveDataSet.reopenClass({
findAll: function(project_id) {
var result = [];
$.ajax({
url: '/active_data_sets.json',
type: 'GET',
data: {'project_id': project_id}
}).then(function(response) {
response.active_data_sets.forEach(function(newset) {
result.addObject(App.ActiveDataSet.create(newset));
});
});
return result;
}
});
App.MapviewShowRoute = Ember.Route.extend({
setupController: function(controller, model) {
this.controllerFor('activedatasetIndex').set('content', App.ActiveDataSet.findAll(model.id));
}
});
App.MapviewShowController = Ember.ObjectController.extend({
needs: ['activedatasetIndex'],
content: null,
dataSets: [],
createDataSets: function() {
// create the datasets
for (var counter = 0; counter < this.get('controllers.activedatasetIndex.content').length; counter++) {
alert(dataSets[counter].ds.name);
}
}
});
App.MapviewShowView = Ember.View.extend({
map: null,
didInsertElement: function() {
var map = null;
var myOptions = {
zoom: 8,
center: new google.maps.LatLng(52.368892, 4.875183),
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
},
navigationControl: true,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(this.$('#map_canvas').get(0), myOptions);
this.set('map', map); //save for future updations
var h = $(window).height(),
offsetTop = 60; // Calculate the top offset
$('#map_canvas').css('height', (h - offsetTop));
// get the datasets
this.controller.createDataSets();
}
});
App.ActiveDataSet=Ember.Object.extend({
进展:0
});
App.ActiveDataSet.class({
findAll:功能(项目id){
var结果=[];
$.ajax({
url:“/active_data_sets.json”,
键入:“GET”,
数据:{'project_id':project_id}
}).然后(功能(响应){
response.active\u data\u set.forEach(函数(新闻集){
addObject(App.ActiveDataSet.create(newset));
});
});
返回结果;
}
});
App.MapviewShowRoute=Ember.Route.extend({
设置控制器:功能(控制器、型号){
this.controllerFor('activedatasetIndex').set('content',App.ActiveDataSet.findAll(model.id));
}
});
App.MapviewShowController=Ember.ObjectController.extend({
需要:['activedatasetIndex'],
内容:空,
数据集:[],
createDataSets:function(){
//创建数据集
for(var counter=0;counter
您是否尝试继续承诺链:
App.ActiveDataSet.reopenClass({
findAll: function(project_id) {
return $.ajax({
url: '/active_data_sets.json',
type: 'GET',
data: {'project_id': project_id}
}).then(function(response) {
var result = [];
response.active_data_sets.forEach(function(newset) {
result.addObject(App.ActiveDataSet.create(newset));
});
return result;
});
}
});
App.MapviewShowRoute = Ember.Route.extend({
setupController: function(controller, model) {
App.ActiveDataSet.findAll(model.id).then(function(content) {
this.controllerFor('activedatasetIndex').set('content', content);
});
}
});