2013-11-25 10 views
-1

У меня есть этот код здесь:Update Select Box После Другое Выберите Box Change

App.SearchController = Ember.ObjectController.extend({ 
selectedCabinet: null, 
selectedTabs: null, 

selectCabinetData: function() { 
    return this.store.find('cabinets') 
}.property('@each.cabinets') , 

actions: { 
    searchFiles: null, 
}, 
selectedCabinetChanged: function() { 
    console.log(this.selectedCabinet.id) 
    if (this.selectedCabinet){ 
     return this.store.find("tabs", {cabinet: this.selectedCabinet.id}) 
    }else{ 
     return null; 
    } 
}.observes('selectedCabinet') 
}); 

Я могу увидеть запрос Аякса и фильтрует, но он не обновлять поле выбора здесь

{{ вид Ember.Select contentBinding = selectCabinetChanged selectionBinding = "selectedTabs" optionValuePath = "content.id" optionLabelPath = "content.tab_name" подсказка = "Выберите вкладку"}}

Основываясь на значении первого блока выбора, будут диктовать результаты другого.

Я пропустил что-то простое?

+0

Почему вы отметили Django? – tunaktunak

+0

К сожалению, я вышел из меня, используя адаптер Джанго остального для уголька – thedemon

ответ

1

this.store.find("tabs", { ... }) возвращает обещание вместо массива, так что вам нужно будет создать filteredTabs свойства и установите значение с результатом от разрешенного обещания:

App.SearchController = Ember.ObjectController.extend({ 
    selectedCabinet: null, 
    selectedTabs: null, 
    filteredTabs: null, 
    selectCabinetData: function(){ 
     return this.store.find('cabinets') 
    }.property('@each.cabinets'), 
    actions: { 
     searchFiles: null, 
    }, 
    selectedCabinetChanged: function() { 
     var controller = this;   
     if(this.get('selectedCabinet')){ 
      this.store.find("tabs", { cabinet: this.get("selectedCabinet.id") }).then(function(filteredTabs) { 
       controller.set('filteredTabs', filteredTabs); 
      }); 
     } else { 
      controller.set('filteredTabs', null); 
     } 
    }.observes('selectedCabinet') 
}); 

Обновления contentBinding=selectCabinetChanged к contentBinding=filteredTabs, как это:

{{view Ember.Select contentBinding=filteredTabs selectionBinding="selectedTabs" optionValuePath="content.id" optionLabelPath="content.tab_name" prompt="Select A Tab"}} 
+0

Я сделал изменения, как так: App.SearchController = Ember.ObjectController.extend ({ selectedCabinet: нуль, selectedTabs: нуль, selectCabinetData : функция() { возвращение this.store.find ('') шкафы } .Property Свойство ('@ each.cabinets'), действия: { searchFiles: нулевая, }, selectedCabinetChanged: функция() { console.log ("Changed") если (этот.избранCabinet) { return this.store.find ("tabs", {cabinet: this.get ("selectedCabinet.id")}) } else { return null; } } .property ('selectedCabinet') }); – thedemon

+0

И теперь он не ловит изменения в первом поле выбора. – thedemon

+0

Я обновил ответ, на этот раз у вас есть наблюдатель, но теперь contentBinding равен filterTabs –