从EmberJs中的模型重新加载数据

时间:2014-02-13 15:33:39

标签: javascript ember.js

我目前有一个使用promises的ember模型,并通过URL返回我的数据。

我有一个控制器操作,可以删除同一模型中的记录。完成控制器操作后,如何申请模型数据?

目前唯一的方法是使用SetTimeout然后使用不太理想的transitionTo。

我的控制器:

  

App.SubmitterAllController = Ember.ObjectController.extend({//   初始值isExpanded:false,

     

动作:{       deleteSubmitter:function(params){         //所以我们可以访问嵌套函数中的可用函数         我=这个;

  var submitterStore =     [];
  var submittersToDelete = '';

  $('.jars-used ul li').each(function() {
    if ($(this).hasClass('selected')) {
      submitterStore.push('"'+ $(this).text().replace(/\.jar/, '') + '"');
    }
  });

  $.each(submitterStore, function(i, value) {
    submittersToDelete += value;
  });

  var urlFormulation = '/ProcessManager/manage?type=submitters&action=removeJar&jarsName=[' +
     

submittersToDelete +']';

 $.ajax({type: 'GET', url: urlFormulation, dataType: 'json', 
  success: function(jsonData) {
    $('#myModal').modal();
    $('#myModal .modal-body').html('You have successfully deleted the submitters: ' + submittersToDelete);

  }, error: function() {
    $('#myModal .modal-body').modal();
    $('#myModal .modal-body').html('Warning: there has been an error deleting these processes');
  }
});

}   } });

我的模特:

App.SubmitterAllRoute = Ember.Route.extend({
  model: function(params) {
    return Ember.$.getJSON('/ProcessManager/manage?type=submitters&action=getSubmitters').then(function(data) {
      var submitters = [];

      $.each(data, function(i, item) {
        $.each(item, function(i, item) {
          $.each(item, function(i, item) {
            // Push each submitter into submitter array
            submitters.push(item);
          });
        });
      });

      return submitters;

    });
  }
});

1 个答案:

答案 0 :(得分:0)

如果您只想在控制器操作中重新加载模型,请按以下步骤操作:

App.SampleController = Ember.ObjectController.extend({
    actions: {
        someAction: function(){

            //your function here

            this.set('model', [insert your $.getJSON call here]);
        }
    }
});

但是,根据您提供的代码,这似乎不一定是您需要的最佳方式。使用ajax调用删除记录后,您可以手动从模型中删除该记录,而无需再进行$ .getJSON调用。只需使用this.get()和this.set()函数根据需要操作模型。