2014-12-03 49 views
0

我已经绑定控制器内的查询PARAM没有反映:Emberjs:在查询PARAM变化控制器财产

Profile.MoviesController = Ember.ArrayController.extend({ 
    queryParams: ['type'], 
    type:"horror,action,romantic,biography", 
}); 

我寻找我的路线查询PARAM变化:

Profile.MoviesRoute = Ember.Route.extend({ 
    actions: { 
    queryParamsDidChange: function(params) { 
     console.log("queryParamsDidChange",params,this.get('controller').get('type')); 
    } 
    } 
}); 

最后,在我看来,我使用链接到每一个“类型”的:

{{linkTo "Horror" (query-params type="horror")}}, {{linkTo "Action" (query-params type="action")}} ... 

的问题是,每当我点击任何链接 - 说'恐怖'之一 - 然后queryParamsDidChange挂钩被调用,并且params参数包含{type:'horror'},但'type'属性在控制器 - this.get('controller').get('type') - 仍然是"horror,action,romantic,biography"。有任何想法吗?

回答

3

在您的控制器中,您将'type'的默认值设置为字符串值“horror,action,romantic,biography” - 这不符合您想要的任何内容。

接下来,前值已在type属性,例如设置queryParamsDidChange叫,

App = Ember.Application.create(); 

App.Router.map(function() { 
}); 

App.IndexRoute = Ember.Route.extend({ 
    actions: { 
    queryParamsDidChange: function(params) { 
     console.log("queryParamsDidChange : was " + this.get('controller.type')); 
     console.log("queryParamsDidChange : will be " + (params.type || 'default value')); 
    } 
    } 
}); 

App.IndexController = Ember.ArrayController.extend({ 
    queryParams: ['type'], 
    type: "horror" // the default value, won't appear in URL or params 
}) 

这个动作示例的jsbin是http://emberjs.jsbin.com/jeqijoguku/1/

+0

'//默认值,不会出现在URL或params'你会如何使它显示在查询参数? – ahnbizcad 2015-04-02 14:43:14