Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Promiss访问权限的ember ajax调用将生成模板和控制器_Ajax_Ember.js_Promise - Fatal编程技术网

带有Promiss访问权限的ember ajax调用将生成模板和控制器

带有Promiss访问权限的ember ajax调用将生成模板和控制器,ajax,ember.js,promise,Ajax,Ember.js,Promise,我正在通过ajax请求调用服务器以获取一些数据,我使用了一个承诺。虽然我的模板会在数据返回后自动更新,但我很不幸地访问了控制器中的数据,因为我不知道它确切的存在时间 为了解决这个问题,我可以在控制器中进行额外的ajax调用,以获得相同的数据,但这感觉很糟糕。是否有更好的方法知道何时访问控制器中的数据?作为解决方法,我尝试调用需要didInsertElement上数据的函数,但没有解决问题 App.ActiveDataSet = Ember.Object.extend({ progress:

我正在通过ajax请求调用服务器以获取一些数据,我使用了一个承诺。虽然我的模板会在数据返回后自动更新,但我很不幸地访问了控制器中的数据,因为我不知道它确切的存在时间

为了解决这个问题,我可以在控制器中进行额外的ajax调用,以获得相同的数据,但这感觉很糟糕。是否有更好的方法知道何时访问控制器中的数据?作为解决方法,我尝试调用需要didInsertElement上数据的函数,但没有解决问题

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);
    });
  }
});