2014-06-06 29 views
0

如何在找到模型后添加其他模型属性? (或者我怎么能访问路线的PARAMS在setupController?烬宝应用套件,设置其他模型属性

给出的路线

this.resource('gallery', { path:'/gallery/:gallery_id' }); 

和路由器/routes/gallery.js

export default Ember.Route.extend({ 
    model: function(params) { 
     return this.store.find('monkeys', { monkeyType: params.gallery_id }); 
     //can I add an additional property to the returned model here? 
    }, 

    setupController: function(controller, model) { 
     var pageTitle = 'something related to params.gallery_id'; 
     //can I access route params in here? 
     this.controllerFor("application").set('pageTitle', pageTitle); 
     controller.set('model', model); 
    } 
}); 

理想我想设置的应用程序控制器对pageTitle财产一些gallery_id特定的字符串,它不是由api服务返回的。

api返回以下,基于url /monkeys?monkeyType=someId

{ "monkeys":[{ ... }, { ... }] } 

回答

1

也许是这样的?

export default Em.Route.extend({ 
    model: function(params) { 
     var model = this.store.find('monkeys', { monkeyType; params.gallery_id }); 

     model.then(function(models) { 
      this.controllerFor('application').set('pageTitle', models.get('firstObject.name')); 
     }.bind(this)); 

     return model; 
    } 
}); 

请确认您传回modelthen调用返回的承诺。 store.find()返回一个PromiseArraythen()只是返回一个承诺。

+0

感谢您的输入 - 并不完全是我之后所做的,因为pageTitle依赖于params.gallery_Id,它不是在从this.store.find(...)返回的模型中。 – RYFN

+0

I don看不出有什么问题。 Javascript有闭包,并且由于'params.gallery_id'最可能是一个原始的,你可以在任何你想要的嵌套函数中使用它。 – GJK

0

这里是我已经结束了:

export default Ember.Route.extend({ 
    model: function(params) { 
     return return { 
      tag:params.gallery_id, 
      monkeys:[] 
     }; 
    }, 
    setupController: function(controller, model) { 
     var url = window.ENV.api + 'monkeys?monkeyType=' + model.tag; 

     if(model.monkeys.length === 0){ 
      $.getJSON(url, function(json){ 
       model.monkeys.pushObjects(json.monkeys); 
      }); 
     } 

     this.controllerFor("application").set('pageTitle', 
      this.getTitle(model.tag)); 

     controller.set('model', model); 
    }, 
    getTitle: function(tag){ 
     //some arbitrary non-api lookup 
    } 
}); 

我不是这个解决方案过于激烈,所以会很乐意听到的改进,或者是一个版本,利用灰烬数据。

相关问题