Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.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
Javascript 从动作中设置模型并在ember js中重新加载模板_Javascript_Jquery_Ember.js_Jsonp - Fatal编程技术网

Javascript 从动作中设置模型并在ember js中重新加载模板

Javascript 从动作中设置模型并在ember js中重新加载模板,javascript,jquery,ember.js,jsonp,Javascript,Jquery,Ember.js,Jsonp,我已从另一个动作控制器重定向到一个控制器。 this.get('controllers.searchResult').send('searchDoc',query) 这里我使用AJAX请求获取数组对象 App.SearchResultController = Ember.ArrayController.extend({ serverURL: 'someURL', actions: { searchDoc: function(query) { $.ajax({

我已从另一个动作控制器重定向到一个控制器。
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');
                }
            }
        });
    }
}
});

我是新的余烬JS。我愿意在模型中存储/保存/添加此
文档
对象,并重新加载我的路线
搜索结果

您应该保留对控制器的引用,并在返回结果时使用它设置
内容

例如:

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');
                }
            }
        });
    }
}
});
我还在示例中添加了余烬数组的用法。 设置
内容
会触发视图更新

您可以使用以下命令转换到searchResult:

this.get('controllers.searchResult').send('searchDoc', query);
this.transitionToRoute('searchResult');

谢谢你的回答。我已经在使用它了,但是没有使用
self
。尽管如此,我还是必须使用
self.set('content',response.docs)代替上述命令使其工作。