2013-11-27 75 views
0

我是新来的angularjs和工作指令下拉,但有问题选择初始值。我必须通过选项的Id来选择作为指令的属性。我将属性值设置为一个范围变量,然后在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的价值即NG-的init =“dataSel = 3”,那么它工作正常,但是当我设置为范围变量,然后它不工作。那么我该如何解决这个问题。

编辑 已解决。我相应地更新了代码。

+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

相关问题