我已从另一个动作控制器重定向到一个控制器。
this.get('controllers.searchResult').send('searchDoc', query);
这里我使用AJAX请求获取数组对象
App.SearchResultController = Ember.ArrayController.extend({
serverURL: 'someURL',
actions: {
searchDoc: function(query) {
$.ajax({
type: "GET",
url: serverURL + request,
data : 'q=' + query,
dataType : "JSON",
context : this, // to increase the scope of
statusCode : {
200 : function(response) {
var docs = [];
response.docs.forEach(function(doc) {
docs.push(App.Doc.create(doc));
});
// do something here so that
// docs get save in the model
// and result page get reload
},
400 : function() {
console.log('status 400 something went wrong');
}
}
});
}
}
});
我是Ember JS的新手。我愿意在模型中存储/保存/添加此docs
对象并重新加载我的路由searchResult
。
答案 0 :(得分:2)
您应该保留对控制器的引用,并在获得结果时使用它来设置content
。
示例:
App.SearchResultController = Ember.ArrayController.extend({
serverURL: 'someURL',
actions: {
searchDoc: function(query) {
var self = this; // keep a reference to the controller
$.ajax({
type: "GET",
url: serverURL + request,
data : 'q=' + query,
dataType : "JSON",
statusCode : {
200 : function(response) {
var docs = Ember.A();
response.docs.forEach(function(doc) {
docs.pushObject(App.Doc.create(doc));
});
self.set('content', docs); // use the controller reference to set the content
},
400 : function() {
console.log('status 400 something went wrong');
}
}
});
}
}
});
我还在示例中添加了Ember数组的用法。
设置content
会触发您的视图更新。
您可以使用以下内容转换为searchResult:
this.get('controllers.searchResult').send('searchDoc', query);
this.transitionToRoute('searchResult');