Angularjs: выберите не обновление, когда ng-модель будет обновлена

Я создал следующий пример, таким образом, Вы видите точно, что происходит: http://jsfiddle.net/8t2Ln/101/

То же самое происходит, если я использую ng-опции. У меня есть другая причина того, чтобы сделать его, этот путь, но упрощения примера пропустил ту часть.

Поскольку Вы видите, что это имеет значением по умолчанию две опции. Я отображаю выбранное значение ng-модели рядом с выбором, таким образом, Вы видите, каково это. При использовании главной части для добавления третьей опции, она устанавливает значение к значению той новой опции, как свидетельствуется отображенным значением ng-модели рядом с выбором, но сам выбор не изменяется для показа выбранного правильного значения.

Ниже пример кода в ссылке:

var testApp = angular.module('testApp', ['ngRoute']);

testApp.controller('Ctrl', function ($scope) {

    $scope.newInput = '';
    $scope.inputDevice = [
        {
            value: '1',
            label: 'input1'
        },
        {
            value: '2',
            label: 'input2'
        }
    ];
    $scope.selectedDevice = '';

    $scope.addType = function () {
        var newElem = {
            label: $scope.newInput,
            value: '3'
        };
        $scope.inputDevice.push(newElem);
        $scope.selectedDevice = newElem.value;
    };


});

И вот HTML:


{{ selectedDevice }}

62
задан 6 October 2014 в 11:25

3 ответа

У меня была та же проблема. Что решило, это для меня преобразовывает число в строку. Пример:

$scope.selectedDevice = "" + newElem.value; 
1
ответ дан 31 October 2019 в 14:03

У меня была та же проблема выбора не обновление, когда ng-модель обновляется. Я получал значение для ng-модели от функции, которая извлекла объект из массива на основе ключа, пары значения.

В выполнении этого, возвращенный объект имел hashkey свойство $hashKey: "object:115"

, проблема произошла, когда я создал копию объекта с помощью angular.copy, который снял изоляцию с этого 'hashkey' свойства и следовательно не выбрать.

После того, как я реорганизовал код, для получения значения ng-модели после angular.copy, вопрос был решен

ConstructorReviewers: function (oItem) {
      this.PERSON_ID = oItem.PERSON_ID;
      this.CHAIR_PERSON = oItem.CHAIR_PERSON;

      /* // Commented this part and added it to EditItem function      
      this.oDepartment = CommonFactory.FindItemInArray(vm.oCommittee.arrDepartments, 'NAME', this.DEPARTMENT, 'item');
      */    
      this.EditItem = function () {
           vm.EditItemOriginal = this;
           angular.copy(this, vm.EditItem); // After this update the ng-model into vm.EditItem.oTitle object
           vm.EditItem.oTitle = CommonFactory.FindItemInArray(vm.oCommittee.arrTitles, 'TITLE', vm.EditItem.TITLE, 'item');
           vm.Popup.ShowPopup(true, 'new_edit', Constants.Mentoring.Popup.Edit);
      }
}
1
ответ дан 31 October 2019 в 14:03

У меня была подобная проблема, и причина состояла в том, что мой ключ был числом, но при попытке установить другое значение я отправлял строку. Обходное решение в этом случае должно вызвать для устанавливания образцового значения к тому же типу как ключ.

, например:

<select ng-model="model" ng-options="option.{{ key }} as option.{{ label }} for option in options">
    <option value="">{{ emptyLabel }}</option>
</select>
if (scope.options.length > 0) {
    scope.keyType = typeof(scope.options[0][scope.key]);
}

...

if (scope.keyType == 'number') {
    scope.model = parseInt(newVal, 10);
} else {
    scope.model = newVal;
} 
4
ответ дан 31 October 2019 в 14:03

Другие вопросы по тегам:

Похожие вопросы: