如何在Controller中获取currentPath和动态段

时间:2014-04-06 19:47:16

标签: ember.js

是否有任何'余烬'方式来获取当前的动态细分?它可以在Route中通过参数,如何从ArrayControllers访问它们?

this.get('controllers.application.currentPath')这样的解决方案?当然window.location.hash就在那里,但是ember方式会更有效率。

[UPDATE]

基本上这就是我正在做的事情(它是一个照片库)。

只有一个模型(照片)。她是一个样本:

{
  id: 1,
  name: 'brad-pitt',
  date_added: 'Sat Apr 05 2014 23:04:35 GMT+0530 (IST)',
  link: 'example.com',
  image: 'http://www.somewebsite.com/image.jpg',
  rank: 20
}

路线

 App.Router.map(function(){
   this.route('index', {path: '/'});  
   this.route('photos', {path: ':name'}); 
 })

/显示所有模型,按排名排序。

/brad-pitt再次显示所有模型,但过滤名称为''brad-pitt'

的模型

/brad-pitt?p=1显示所有模型,但过滤器名称=“brad-pitt”AND也会突出显示ID为1(砌体m2具体)的那个。 / p>

控制器

App.PhotosController = Ember.ArrayController.extend({
  needs: ['application'],
  itemController: 'photo',
  queryParams: ['p'],
  p: null,

  pictures: function() {
    var p = this.get('p');
    var pics = this.get('model');

    // console.log(this.get('controllers.application.currentRouteName'));

    if(p) {
      return pics.filterProperty('id', p);
    } else {
      return pics.filterProperty('name', 'some-one'); // <- THIS NEEDS TO BE DYNAMIC
    }
  }.property('p', 'model')
});


App.PhotoController = Ember.ObjectController.extend({
  link_out: function() {
    return 'http://' + this.get('link')
  }.property()
});

0 个答案:

没有答案