Выполнение функции контроллера ember при загрузке маршрута для установки свойства, которое управляет флажком

Я установил флажок ember:

{{view Ember.Checkbox checkedBinding='isChecked'}}

Этот флажок привязан к этому контроллеру:

App.SettingsController = Ember.Controller.extend({

isChecked: false,
isItChecked: function(){

    var me = this;
    $.getJSON('ajax/checkIfUseLowRes.php', function(data){
        //console.log(data);
        //me.isChecked = data;
        me.set('isChecked', data);
        //console.log(me.isChecked);

    })

},
sendSetting: function(){

    var isChecked = this.isChecked;
    //this.set('isChecked', !isChecked);
    console.log(isChecked);

    $.post('ajax/setLowRes.php', {useLowRes: isChecked});
    App.nameSpace.set('needsRefresh', true);

}.observes('isChecked')


});

По существу, это флажок, который публикует параметр, моя проблема заключается в установке исходного состояния флажка. Когда я загружаю маршрут, я хочу запустить isItChecked(), чтобы установить исходное состояние флажка.

Пример: 1. Перейдем к настройкам, установите флажок 2. Я покидаю сайт и возвращаюсь на страницу настроек Здесь я хочу, чтобы функция isItChecked() выполнялась для запроса сервера и выяснения, установлен ли параметр

Если он установлен, запрос get возвращает true, я хочу, чтобы флажок был проверен, следовательно, установка me.isChecked data (true)

как сейчас, я не могу понять, как это сделать, может ли кто-нибудь мне помочь?

Я попытался установить его в моей модели App.SettingsRoute, но, похоже, он не может запустить функцию в моем контроллере.

Спасибо.

JSBin: http://jsbin.com/ukuwiq/1/edit

Ответ 1

Одним из способов достижения этого является использование метода route setupController.

App.SettingsRoute = Ember.Route.extend({
  setupController: function(controller, model) {
    $.getJSON('ajax/checkIfUseLowRes.php', function(data){
      console.log('setting isChecked to: ', data);
      controller.set('isChecked', data);
    })
  }
})

Это должно выполнить эту работу с минимальными изменениями в вашем существующем коде, но имеет некоторые недостатки и не является точно таким же. Возможно, это имело бы больше смысла иметь объект модели, представляющие параметры, перемещать код Ajax к этой модели объекту и использовать маршрут модель крюк, чтобы вызвать по мере необходимости. См уголек-без-Ember-данных для примера, как это может работать.

Ответ 2

как говорит Майк, вы можете использовать 'setupController', или вы также можете использовать это:

App.SettingsRoute = Ember.Route.extend({
  activate: function() {
    this.controllerFor('settings').isItChecked();
  }
})

Ответ 3

Не могли бы вы использовать функцию init? например.

App.IndexController = Ember.ObjectController.extend({
    init: function() {
    console.log("function run");
},