使用this.transitionTo更改查询参数会产生错误

时间:2015-03-17 10:01:51

标签: javascript ember.js uncaught-typeerror

使用来自Ember.js docs

的相当多的复制粘贴
App.CresShowResultController = Ember.ArrayController.extend({
queryParams: ['county'],
county: null,

   actions: {
       displayQueryData: function(){
           this.transitionTo({queryParams: {county: 'someCounty'}});
       },
   },

});

分析表单后,将从另一个控制器调用该操作。 我收到一个错误:Uncaught TypeError:undefined不是函数

这也是路线。

App.CresShowResultRoute = Ember.Route.extend({
    renderTemplate: function(){
       this.render('showResult');
    }
});

SideQuestion:如何使用transitionTo直接从另一个控制器更改URL参数而不使用“displayUseryData”作为中间人函数?

编辑:添加了我的Router.map以指定:

App.Router.map(function(){
  this.resource('cres', function() {
    this.route('showResult');
  });

  this.resource('about');
  this.resource('posts', function() {
    //child route posted inside the parent
    this.resource('post', { path: ':post_id'});
  });
});

像往常一样,感谢您的任何帮助评论!

2 个答案:

答案 0 :(得分:0)

尝试:

App.CresShowResultController = Ember.ArrayController.extend({
queryParams: ['county'],
county: null,

   actions: {
       displayQueryData: function(){
           this.transitionTo({queryParams: {county: 'someCounty'}});
       }.bind(this),
   },
});

我认为displayQueryData函数中的“this”是一个窗口引用。

答案 1 :(得分:0)

如果您在上面引用,只需更新queryParam本身就会产生您正在寻找的效果。

在路线中,您可以定义这些queryParams是否会替换该网址,或者是否会刷新模型。

当您希望切换到其他路线或不同型号时,请使用transitionToRoute。

App.CresShowResultController = Ember.ArrayController.extend({
queryParams: ['county'],
county: null,

   actions: {
       displayQueryData: function(){
           this.set('county', 'someCounty');
           // this.transitionTo({queryParams: {county: 'someCounty'}});
       },
   },

});