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. * работал правильно в данный момент.