2014-10-06 5 views
3

У меня есть выбор, который заполняется с помощью угловой привязки. Опт в opt.name для неавтоматического в ведрах "Применить kendo dropdownlist style только на угловой выбор

< выберите класс = 'clsBucket' ID = 'optBuckets' нг-OPTIONS = нг-модели = '' bucketSelected нг смены = 'changeBucket()' >

Теперь я хочу применить стиль dropdownlist Kendo для этого выбора, но я не хочу заполнять параметры с помощью источника данных kendo и т. Д. И продолжать делать это с помощью углового.

Если я использую $ ('# optBuckets'). KendoDropDownList(), то я получаю требуемый стиль, но данные привязки теряются.

Любая помощь, чтобы решить эту проблему.

+0

Вы нашли решение? –

+0

Я просто обновляю это, так как это может потребоваться кем-то. В угловом режиме используйте kendoDropDownList только после получения данных. ' $ HTTP ('/ хх'). Получить(). Успех (функция() {$ тайм-аут (функция() { $ ('# optBuckets'). KendoDropDownList() }} ' –

ответ

0

Приведенный выше код перечисляет «ведра» в качестве источника данных. Имея это в виду, обещание, которое присваивает «ведра» к сфере действия, должно иметь свое обещание, раскрытое в области. Оттуда директива может получить доступ к нему (здесь называется «bucketsPromise»)

код в контроллере может выглядеть, например:

$scope.bucketsPromise = bucketsService.get().then(function(data) { 
    $scope.buckets = data; 
}).promise; 

директива будет ли выглядеть как например:

.directive('angularToKendoDropdown', function() { 
    return { 
    scope: { 
     'bindToCtrl': '&dataSourcePromise' 
    }, 
    link: function(scope, element, attr) { 
     scope.bindToCtrl.then(function() { 
      $(element).kendoDropDownList(); 
     }) 
    } 
}; 
}); 

Данный выбор будет выглядеть следующим образом:

<select class='clsBucket angular-to-kendo-dropdown' id='optBuckets' 
     ng-options='opt as opt.name for opt in buckets' 
     ng-model='bucketSelected' ng-change='changeBucket()' 
     data-source-promise='bucketsPromise'> 
</select>