#javascript #angularjs #angular-ui #angular-promise #ui-select
#javascript #angularjs #angular-пользовательский интерфейс #angular-обещание #пользовательский интерфейс-выберите
Вопрос:
У меня есть html
<ui-select multiple ng-model="item.selectedOrganizations" theme="bootstrap" ng-disabled="disabled" sortable="true" close-on-select="false">
<ui-select-match placeholder="Select organizations...">{{$item.Name}}</ui-select-match>
<ui-select-choices repeat="organization.Name as organization in organizationsDB | propsFilter: {Name: $select.search}">
<div ng-bind-html="organization.Name | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
У меня уже есть кое-что в item.selectedOrganizations, поэтому я предварительно заполню поле выбора некоторыми значениями. Массив имен.
item.selectedOrganizations = selectedOrganizations;
Я заполню параметры поля выбора некоторыми данными.
$http.get('/admin/organizations')
.success(function(data){
vm.organizationsDB = data.data;
});
Пока все работает, но, конечно, я должен объявить переменные:
vm.organization = {};
// vm.organizationsDB = [];
Если я оставлю комментарий, поле выбора будет работать, но с ошибками в консоли. Если я удалю комментарий и сначала объявлю переменную organizationsDB, ошибок в синтаксисе не будет, но item.selectedOrganizations не будет предварительно заполнен массивом имен.
Кто-нибудь может мне помочь в этом вопросе?
Ответ №1:
Ваше представление немного неверно, я предполагаю, что вы скопировали из примера и не совсем связали его с вашей собственной реализацией.
Я думаю, что я рассмотрел вашу проблему ниже (скрипка здесь:http://jsfiddle.net/qmf49qo3 /). Я добавил литерал поддельного объекта вместо вашего ответа на обещание.
Вид
<div ng-app="app" ng-controller="myCtrl as vm">
<ui-select tagging ng-model="vm.selectedOrganizations" theme="bootstrap">
<ui-select-match placeholder="Pick one...">{{$select.selected.value}}</ui-select-match>
<ui-select-choices repeat="val as organization in vm.organizationsDB | filter: $select.search track by organization.value">
<div ng-bind="organization.value | highlight: $organization.search"></div>
</ui-select-choices>
</ui-select>
</div>
Модель
var app = angular.module('app', ['ui.select']);
app.controller("myCtrl", function() {
vm = this;
vm.isLoaded = false;
vm.organizationsDB = [{
'key': 1,
'value': 'IBM'
}, {
'key': 2,
'value': 'Microsoft'
}];
vm.selected;
vm.selectedOrganizations = {
'key': 1,
'value': 'Prepopulated Value'
}
});
Комментарии:
1. Я понимаю вашу точку зрения. Но ng-модель — это item.selectedOrganizations (что означает, что у меня есть несколько элементов). И я не хочу создавать его vm.selectedOrganizations = empty. У меня там уже есть некоторые значения.