web-dev-qa-db-ja.com

AngularJS ng-repeat in Bootstrap multiselect dropdown

私はBootstrap Multiselect Dropdown http://davidstutz.github.io/bootstrap-multiselect/ を使用しました&AngularJSのサブテンプレートに埋め込み、それを次の機能:

$scope.$on('$viewContentLoaded', function () {
    $(document).ready(function() {
        $('#example27').multiselect({
            includeSelectAllOption: true
        });
    });
});

Ng-repeatを引き続き使用して、この入力選択の内部オプションを出力しました。

    <select id="example27" multiple="multiple">
        <option ng-repeat="list in lists" value="{{list.id}}">{{list.name}}</option>
    </select>

しかし、ng-repeatがこの入力選択にある場合、機能せず、データを印刷しませんでした。誰でもこの問題を解決する方法を知っています、助けてください!!

12
Oc Chuoj Dau

Bootstrap-multiselectを使用する場合は、@ user2598687の回答のように、ng-options属性を使用する必要があります。ここで、Firefoxで動作するフィドルのバージョン: jsfiddleをクリックしてください

<select class="multiselect" data-placeholder="Select Products" 
  ng-model="productSelection" ng-options="item.id as item.name for item in Products"
  multiple="multiple" multiselect-dropdown >
$scope.Products = [{id:1,name:"Apple"}, {id:2,name:"Banana"}, {id:3,name:"Carrort"}, {id:4,name:"Dart"}];
9
Aleksey

https://github.com/davidstutz/bootstrap-multiselect/issues/128 およびjs fiddle http:// jsfiddle。 net/58Bu3/1 / は、両方ともangular js with bootstrap-multiselectの使用に関連しています。ここでは、フィドルを作成する際にどのように使用したかを示します。

<select class="multiselect" data-placeholder="Select Products" 
            ng-model="productSelection" ng-options="item as item for item in Products"
            multiple="multiple" multiselect-dropdown >

            </select>
<p>Selection: {{productSelection}}</p>

この例は実用的なものなので、先に進んで試してください。

6
user2598687

私はこの問題に対処しました!! ng-repeatを使用する代わりに、次のようなオプションを動的に追加できます。

var topicSelect = document.getElementById("topic-select");

for (topic in scope.topicList) {
    topicSelect.add(new Option(scope.topicList[topic], scope.topicList[topic]));
}
0
Brendan

私は自分で複数選択のドロップダウンを探していました。私はこのソリューションをLong2Knowを使用して自分で開発することにしました。私はUIモーダルで複数選択を取得しましたが、それが私の当初の目標でした。

var myApp = angular.module('myApp', ['long2know', 'ui.bootstrap']);

myApp.controller('testCtr', function($scope, $uibModal) {
  $scope.test = function() {
    $scope.colors = [{
      name: 'black'
    }, {
      name: 'white'
    }, {
      name: 'red'
    }, {
      name: 'blue'
    }, {
      name: 'purple'
    }, {
      name: 'pink'
    }, {
      name: 'brown'
    }, {
      name: 'yellow'
    }];

    $uibModal.open({
      template: "<multiselect class='input-xlarge multiselect' ng-model='myColor' options='color.name for color in colors' multiple='true' required enable-filter='true' filter-placeholder='Filter stuff..'></multiselect>",
      controller: 'newCtrl',
      resolve: {
        colors: function() {
          return $scope.colors;
        }
      }
    });
  }
});

myApp.controller('newCtrl', function($scope, colors) {
  $scope.colors = colors;
});

プランカー

0
JEuvin