0

モデルを見つけた後、モデル プロパティを追加するにはどうすればよいですか? (または、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":[{ ... }, { ... }] }
4

2 に答える 2

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;
    }
});

呼び出しによって返される約束ではなくmodel、戻っていることを確認してください。a whileを返すだけで promise を返します。thenstore.find()PromiseArraythen()

于 2014-06-06T16:45:59.607 に答える
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
    }
});

私はこのソリューションにあまり熱心ではないので、改善点や Ember Data を利用するバージョンについて聞いてうれしいです.

于 2014-06-10T13:58:21.600 に答える