2013-08-13 18 views
11

bir onay kutusu kontrol özelliğini ayarlamak için bir kor denetleyici işlevi çalıştırma:rota yükler Bir kor onay kurdunuz

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

Bu onay kutusu bu denetleyiciye bağlı:

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') 


}); 

Aslında öyle bir ayarı gönderen bir onay kutusudur, sorunum onay kutusunun orijinal durumunu ayarlıyor. Ben rotayı yüklediğinizde, ben onay kutusunu orjinal halini belirlemek için isItChecked() çalıştırmak istiyorum.

Örnek: ayarlara gitmek 1. Nerede istersem isItChecked() fonksiyon sunucusunu sorgulamak için çalıştırın ve görmek için 2. Siteyi ayrılıp İşte ayarları sayfasında gel onay kutusunu olduğunu tıklayın o ayarlanırsa ayar

ayarlanır, get isteği true döndürür, ben onay kutusu dolayısıyla veri (doğru) an itibariyle

yapamam rakamı me.isChecked ayarlayarak, kontrol edilecek istiyorum Bunu nasıl yapacağım, kimse bana yardım edebilir mi?

benim App.SettingsRoute 'ın modelinde ayarlama denedim, ama bu benim denetleyicisi işlevini çalıştırmak mümkün görünmemektedir.

Teşekkürler.

JSBin: Bunu gerçekleştirmek için http://jsbin.com/ukuwiq/1/edit

cevap

8

bir yolu rotanın setupController yöntemini kullanmaktır.

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

Bunun günümüze varolan koduna en az değişikliklerle işi ama bazı dezavantajları var ve tam olarak-kor yönlü değildir. Muhtemelen, ayarlarınızı temsil eden bir model nesnesi olması modelin nesneye ajax kodu taşımak ve gerektiğinde tetiklemek için rotanın modeli kanca kullanmak daha mantıklıdır. Bunun nasıl çalışacağıyla ilgili bir örnek için bkz. ember-without-ember-data.

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

teşekkür ederiz! Bu çok yardımcı oldu. – MoDFoX

6

Mike 'setupController' kullanabilir veya bu kullanabilirsiniz, söylediği gibi? Örneğin.

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

oldukça 'this.controllerFor ('ayarları') olmamalıdır ('isItChecked') göndermek;.'? – intuitivepixel

0

değil sadece başlat işlevini kullanın Could:

+4

Bu sadece bir defa çalıştırır, her zaman kontrolör gösterilir değil. – bouke