我目前有一个使用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;
});
}
});
答案 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()函数根据需要操作模型。