这是我的把手模板中的linkTo助手
{{#linkTo 'person.page' nextPage target="controller"}}Next{{/linkTo}}
这是我的控制器
PersonApp.PersonController = Ember.ArrayController.extend(Ember.PaginationMixin, {
itemsPerPage: 2
});
这是mixin
中的计算属性 nextPage: function() {
var nextPage = this.get('currentPage') + 1;
var availablePages = this.get('availablePages');
if (nextPage <= availablePages) {
return Ember.Object.create({id: nextPage});
}else{
return Ember.Object.create({id: this.get('currentPage')});
}
}.property('currentPage', 'availablePages'),
当我在每个return语句之前控制日志时,我可以看到页面ID是正确的......但是我的html没有更新。有什么简单的我在上面做错了吗?
每次我更改页面时都会看到打印件(因此我依赖的计算属性被触发)
这是一个完整的jsfiddle显示,在你第一次点击下一个...它仍然指向/#/ page / 2而不是/#/ page / 3
提前谢谢
答案 0 :(得分:1)
首先:如果你不想把最重要的代码不是小提琴的一部分(FilterSortSliceMixin)链接起来,那就太好了。因此,尽管小提琴真的很大并且包含许多不必要的代码,但是无法测试任何东西。
关于您的问题: 我认为这不起作用,因为您指定的依赖属性不执行任何操作。您的{{#linkTo}}助手将用户发送到PersonPageRoute。这条路线的代码是:
PersonApp.PersonPageRoute = Ember.Route.extend({
model: function(params) {
return PersonApp.Person.find(params.page_id);
},
setupController: function(controller, model) {
this.controllerFor('person').set('selectedPage', model.get('id'));
}
});
因此,您将获得personcontroller并设置属性selectedPage
。但是,您的从属密钥中未指定此属性。所以我建议这样做:
//maybe even remove currentPage??
}.property('currentPage', 'availablePages' , 'selectedPage'),
所以我猜你对你的命名感到困惑。我想,您应该拥有“selectedPage”或“currentPage”属性,对吧?
更新:这绝对是一个错误。下面是LinkView类的摘录,它与linkTo helper:
一起使用var LinkView = Ember.View.extend({
attributeBindings: ['href', 'title'],
href: Ember.computed(function() {
var router = this.get('router');
return router.generate.apply(router, args(this, router));
})
});
如您所见,它未指定任何相关键。也许你可以重新打开/修补这个类并添加依赖键。不知道这可能是哪一个,但也许context
?