AngularJS ng-repeat в выпадающем меню Multi-Select Bootstrap
Я использовал 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 используется для выбора этого входа, он не работает и не печатает никаких данных.
Кто-нибудь знает, как решить эту проблему, пожалуйста, помогите мне!
Ответы
Ответ 1
Если вы используете bootstrap-multiselect, вы должны использовать атрибут ng-options, как в ответе @user2598687.
Здесь версия скрипта, которая работает с 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"}];
Ответ 2
вы можете попытаться взглянуть на проблему, https://github.com/davidstutz/bootstrap-multiselect/issues/128 и скрипт js, http://jsfiddle.net/58Bu3/1/, поскольку оба они связаны с использованием angular js с 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>
Пример - рабочий, поэтому идите и попробуйте.
Ответ 3
Я только что рассмотрел эту проблему!! Вместо того, чтобы пытаться использовать ng-repeat, вы можете динамически добавлять параметры следующим образом:
var topicSelect = document.getElementById("topic-select");
for (topic in scope.topicList) {
topicSelect.add(new Option(scope.topicList[topic], scope.topicList[topic]));
}
Ответ 4
Я искал всплывающее меню мультиселекции. Я сам воспользовался этим решением, используя Long2Know. Я даже получил мультиселекцию в пользовательском интерфейсе, который был моей первоначальной целью.
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;
});
Plunker