这是我的router.js:
[NSString stringWithFormat:@"\"Hi There=\" Other text"];
我正在尝试这样做,以便当用户从导航栏组件中选择一个选项时,它们将被重定向到相应的categories / category_id页面。我能够将正确的ID输入到navbar组件中的变量中,但是我的this.transitionTo语句不起作用。这是navbar-header.js:
从'ember'导入Ember;
import Ember from 'ember';
import config from './config/environment';
var Router = Ember.Router.extend({
location: config.locationType
});
Router.map(function() {
this.route('category', {path: '/category/:category_id'});
this.route('listing', {path: '/listing/:listing_id'});
});
export default Router;
我做错了什么?
编辑:向所有人开放,你不能从一个组件进行转换,你必须使用一个动作并将其发送回路线。正如joshfarrent所说的应该是this.transitionTo('category',catId);答案 0 :(得分:3)
您需要将Id作为单独的参数传递到transitionTo
,并删除斜杠,如下所示:
this.transitionTo('category', catId);
请参阅Ember Route文档的transitionTo
部分here。
我还建议不要使用HTML元素的值来确定哪个项目已被选中,而是在模板中的每个动作助手上执行类似的操作:
{{action "categorySelected" VALUE}}
只需将VALUE替换为您在HTML元素上设置的相同数值即可。这样,元素的值将传递给categorySelected
函数,如下所示:
categorySelected: function(value) {
debugger;
this.transitionTo('category', value);
}
最后,您是否有理由不仅使用{{link-to}}
助手来达到同样的效果?