Ng-модель не изменяется в u-select
Я пытаюсь добиться чего-то очень простого:
<ui-select multiple ng-model="company.stack" theme="bootstrap">
<ui-select-match>{$$item.name$}</ui-select-match>
<ui-select-choices repeat="technology in technologies | filter: $select.search">
<div ng-bind-html="technology.name | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
При изменении объектов изменения не отражаются в модели company.stack. Я попытался изменить его на $parent.company.stack, но он все равно не работает. Что мне не хватает?
Я использую AngularJS v1.3.0-beta.17.
Ответы
Ответ 1
У меня была аналогичная проблема с angular 1.3.14
и ui-select
и директивой с несколькими вариантами выбора ui-select
с массивом. Я не смог привязать выбранные элементы к массиву, указанному в ng-model
.
Я получил его для работы, обернув selectedItems
в объект:
$scope.myObj = { selectedItems : []};
...
<ui-select ng-model="myObj.selectedItems" ...>
</ui-select>
Ввод selectedItems
непосредственно на $scope
не работал у меня.
Ответ 2
Не уверен, что вы это уже поняли, но сегодня я тоже борюсь с этим "основным прецедентом", будучи новым для AngularJS и всех. Я использую Angular 1.2.16 и ui-select 0.8.3, и, хотя все остальное работает, я просто не мог заставить его обновлять переменную области employee.selected
.
В моем случае проблема была вызвана моим ограниченным опытом работы с AngularJS. Поскольку ng-model имеет свойство объекта (сотрудник, в моем случае), он должен быть сначала инициализирован. Добавление $scope.employee = {};
в контроллер разрешило это.
Ответ 3
Инициализация пустого объекта точно так же, как @Rado, упомянутый исправил его для меня в этой структуре:
<ui-select ng-model="reportFilterStatus.selected" title="Filtrar status">
<ui-select-match placeholder="Filtra un estatus">
{{$select.selected}}
</ui-select-match>
<ui-select-choices repeat="status in filterStatusOptions | filter: $select.search">
<small ng-bind-html="status | highlight: $select.search"></small>
<span ng-bind-html="statuse | highlight: $select.search"></span>
</ui-select-choices>
</ui-select>
Ответ 4
Я тоже борюсь с очень простым прецедентом, на Angular 1.2.16 и ui-select 0.8.3. Хотя мне кажется, что в вашем коде есть опечатка, в ui-select-match.
Обычно эти атрибуты выглядят как {{$select.selected.your_property_here}}
, поэтому двойные фигурные фигурные скобки и знак одного доллара, для какого-либо стандартного имени свойства $select.selected
. Это может быть ваша проблема?
Ответ 5
Я решил это, установив ng-init для этой модели после </ui-select>
в следующем div.
Пример:
<div class="col-md-6" ng-init="company-stack=null">
Ответ 6
Для меня это было не обновление текста, и я использовал его так:
$timeout(function () {
$('#ownerdetail').trigger("create");
$('#ownerdetail').delay(0).animate({opacity: 1}, 100);
$('#selectdcontact').selectmenu().selectmenu('refresh'); //This solves it
$('#selectdcust').selectmenu().selectmenu('refresh'); //This solves it
});
Ответ 7
У меня похожая проблема для angularjs 1.4. В одном контроллере значение ng-модели получают обновление. Но, используя то же самое на другой странице, это не работает. Ниже приведены мои коды
За работой:
var ctrl = this;
ctrl.filters = {};
ctrl.filters.country = $rootScope.lUPro.RM_Country.split(",");
$(".country_select2").select2().val(ctrl.filters.country).trigger('change');
Выберите поле
$comint->CountrySelectBox(array("name"=>"country[]", "class"=>"country_select2 form-control", "id" => "req_country", "ng-model" => "ctrl.filters.country","multiple" =>"multiple"));
Не работает:
var prectrl = this;
prectrl.preferenceformdata = {};
var pf = {};
pf.country = $rootScope.lUPro.RM_Country.split(",");
prectrl.preferenceformdata = pf;
$(".rm_country_select2").select2().val(prectrl.preferenceformdata.country).trigger('change');
Выберите поле:
$comint->CountrySelectBox(array("name"=>"country[]","class"=>"country_select2 form-control","id" => "req_country","ng-model"=>"prectrl.preferenceformdata.country","multiple" =>"multiple"));
Так что обойти я использую, чтобы обновить значение в переменной ng-модели:
$(".country_select2").select2().val(prectrl.preferenceformdata.country)
.trigger('change').on("change",
function(e){
var values = $(this).val();
$scope.$apply(function(){prectrl.preferenceformdata.country = values;});
});
Ответ 8
некоторые люди здесь коснулись проблемы, но я поясню. по какой-то причине ui-select требует, чтобы ng-модель была вложенным значением в $ scope. поэтому ng-модель должна указывать на xy в области видимости, а не на x или y.
Ответ 9
У меня похожие проблемы, кажется, что angular -ui-select # 0.7 требует, чтобы angular # 1.2. * работал правильно в данный момент.