2014-10-06 56 views
3

我有一个正在使用角度绑定来填充的选择。仅在角度选择上应用kendo下拉列表样式

<选择类= 'clsBucket' ID = 'optBuckets' NG-选项= 'opt作为水桶opt.name用于选择' NG-模型= 'bucketSelected' NG-变化= 'changeBucket()' >

现在我想在这个选择上应用Kendo dropdownlist样式,但我不想使用kendo数据源等来填充选项,并继续使用角度来做这件事。

如果我使用$('#optBuckets')。kendoDropDownList()然后我得到所需的样式,但绑定数据丢失。

任何帮助,以解决这一问题,高度赞赏。

+0

您是否找到解决方案? – 2015-06-03 05:24:01

+0

我只是更新这个,因为它可能是需要的人。在角度中,只有在获取数据后才应用kendoDropDownList。 ' $ HTTP( '/ XX')。获得()。成功(函数(){$ 超时(函数(){ $( '#optBuckets')。kendoDropDownList() }} ' – 2015-06-08 15:27:12

回答

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>