2013-11-27 4 views
0

Я новичок в angularjs и работает над директивой для выпадающего списка, но с проблемой выбора начального значения. Мне нужно передать идентификатор опции, чтобы выбрать в качестве атрибута директиву. Я устанавливаю значение атрибута в переменной области, которую я затем использую в ng-Init.Выберите опцию в раскрывающемся меню, используя директиву в angularjs

Вот моя директива код:

export class ChoiceGroup 
    { 
     constructor() 
     { 
      var directive: ng.IDirective = {}; 
      directive.restrict = "E"; 
      directive.replace = true; 
      directive.template = '<div><select name="cmbCG" ng-model="dataSel" ng-options="c.DisplayName for c in data"></select></div>'; 
      directive.link = function ($scope: any, element: JQuery, attributes: any) { 
       var injector = angular.element(document).injector(); 
       var key = attributes.key; 

       var cgCacheService: ChoiceGroupsCacheService; 
       seCGCacheService = injector.get('seChoiceGroupsCacheService'); 

       var values: Array<ChoiceValue>; 
       values = seCGCacheService.GetChoiceValues(key); 

       $scope.data = values; 
       if (attributes.selectedvalue) { 
        $scope.selectedvalue = values[attributes.selectedvalue]; 
       } 
      } 

      return directive; 
     } 

Код в машинописи. Вот HTML:

<choicegroupcombo key="RecurrenceFrequency" selectedvalue="3"></choicegroupcombo> 

Если я жёстко значение dataSel т.е. нг-INIT = «dataSel = 3», то он работает нормально, но когда я ставлю в области видимости переменных, то он не работает. Итак, как я могу исправить проблему.

EDIT Решенный. Я обновил код соответствующим образом.

+0

Что фактическая цель? Ваш код, похоже, не пытается сделать ничего, кроме обычного окна выбора. – codevinsky

ответ

0

Я думаю, что это может быть классический случай «чрезмерной инженерии».

Ваш код, похоже, не пытается сделать ничего, кроме стандартного окна выбора.

Попробуйте вместо этого:

app = angular.module('app', []) 

app.controller 'MainCtrl', ($scope) -> 
    # $scope.values = ChoiceGroupsCacheService(key) 
    $scope.values = [ 
    { id: 0, label: 'Zero' } 
    { id: 1, label: 'One' } 
    { id: 2, label: 'Two' } 
    { id: 3, label: 'Three' } 
    ] 
    $scope.number = 2 

и вид:

<select ng-model="number" ng-options="item.id as item.label for item in values"></select> 

код в CoffeeScript:

Вот plunkr: http://plnkr.co/edit/C6qmUoJ6HjsAT69oavRg

+1

Мне нужна директива, потому что я хочу повторно использовать это раскрывающееся меню во многих местах приложения – Haris

Смежные вопросы