2015-12-18 5 views
0

Имея один тег select в html, теперь я хочу сделать тэг select dynamic через angularjs, чтобы я мог получить выпадающие списки из одного варианта выбора, а также хочу дать разные ng-опции для каждого нового раскрывающегося спискадинамически выпадающих списков через angularjs

"<div> 
    <label>dropdown1</label> 
    <select ng-options=''></select> 
</div>" 
+0

Здесь: http : //stackoverflow.com/questions/34200484/ng-options-in-angular-for-arrays-and-objects –

+0

Также вы должны посмотреть на углового чиновника [docs] (https://docs.angularjs.org/API/нг/директивы/выбрать). Существует много примеров того, что вам нужно с прикрепленными файлами html и js. – theodor

ответ

0

Я не знаю, что ваша модель выглядит, но, возможно, что-то вроде этого:

<div ng-repeat="item in items"> 
    <label>{{item.label}}</label> 
    <select ng-options="item.options"></select> 
</div> 

В контроллере вы бы массив $scope.items, которые содержат все выпадающие/отдельные элементы и их параметры.

$scope.items = [ 
    {'label':'Item 1','options':{"option 1.1","option 1.2"}}, 
    {'label':'Item 2','options':{"option 2.1","option 2.2"}} 
]; 
+0

Могу ли я передать функцию в ng-option? –

3

Честно говоря, ваш вопрос для меня немного непонятно, но это может помочь вам:

<div ng-repeat="object in myObjects"> 
    <label>{{object.name}}</label> 
    <select ng-options="object.myOptions"></select> 
</div> 

это в ЯШ:

function AppCtrl ($scope) { 
    $scope.myObjects = { 
    "Select1": { 
     "name": "dropdown1", 
     "myOptions": [ 
     "one", 
     "two" 
     ] 
    }, .... 
2

var app =angular.module('pof', []); 
 
    
 

 
    app.controller('myController2', function($scope){ 
 
     $scope.statuses = [{ 
 
     id: 1, 
 
     name: "First Value"   
 
    }, { 
 
     id: 2, 
 
     name: "Second Value"   
 
    }, { 
 
     id: 3, 
 
     name: "Third Value"   
 
    }, { 
 
     id: 4, 
 
     name: "Fourth Value"   
 
    }]; 
 
    $scope.selected_status = 3; 
 
    
 
    }) 
 

 
    app.directive('bsDropdown', function ($compile) { 
 
    return { 
 
     restrict: 'E', 
 
     scope: { 
 
      items: '=dropdownData', 
 
      doSelect: '&selectVal', 
 
      selectedItem: '=preselectedItem' 
 
     }, 
 
     link: function (scope, element, attrs) { 
 
      var html = ''; 
 
      switch (attrs.menuType) { 
 
       case "button": 
 
        html += '<div class="btn-group"><button class="btn button-label btn-info">Action</button><button class="btn btn-info dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>'; 
 
        break; 
 
       default: 
 
        html += '<div class="dropdown"><a class="dropdown-toggle" role="button" data-toggle="dropdown" href="javascript:;">Dropdown<b class="caret"></b></a>'; 
 
        break; 
 
      } 
 
      html += '<ul class="dropdown-menu"><li ng-repeat="item in items"><a tabindex="-1" data-ng-click="selectVal(item)">{{item.name}}</a></li></ul></div>'; 
 
      element.append($compile(html)(scope)); 
 
      for (var i = 0; i < scope.items.length; i++) { 
 
       if (scope.items[i].id === scope.selectedItem) { 
 
        scope.bSelectedItem = scope.items[i]; 
 
        break; 
 
       } 
 
      } 
 
      scope.selectVal = function (item) { 
 
       switch (attrs.menuType) { 
 
        case "button": 
 
         $('button.button-label', element).html(item.name); 
 
         break; 
 
        default: 
 
         $('a.dropdown-toggle', element).html('<b class="caret"></b> ' + item.name); 
 
         break; 
 
       } 
 
       scope.doSelect({ 
 
        selectedVal: item.id 
 
       }); 
 
      }; 
 
      scope.selectVal(scope.bSelectedItem); 
 
     } 
 
    }; 
 
});
<link href="http://st.pimg.net/cdn/libs/bootstrap/2.2/css/bootstrap.min.css" rel="stylesheet"/> 
 
<script src="https://code.angularjs.org/1.4.8/angular.js"></script> 
 
    <script src = "http://st.pimg.net/cdn/libs/jquery/1.8/jquery.min.js"> 
 
</script> 
 
<script src = "http://st.pimg.net/cdn/libs/bootstrap/2/js/bootstrap.min.js"> 
 
</script> 
 

 
    <body ng-app="pof"> 
 
    
 
    <div ng-controller="myController2 as myCtrl2"> 
 
     
 
     <select ng-init="selected_status = statuses[1].id" ng-model="selected_status" ng-options="status.id as status.name for status in statuses"></select> 
 
     
 
     
 
<!--<bs-dropdown data-menu-type="button" select-val="selected_status = selectedVal" 
 
preselected-item="selected_status" data-dropdown-data="statuses"></bs-dropdown> &nbsp; --> Selected Value : {{selected_status}} 
 

 
    </div>  
 
    
 
</body>

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