Я использую angular v.1.2.28, и у меня есть сложный элемент, который сочетает в себе раскрывающийся список с вводом текста:
<div class="btn-group vl-dropdown-container " style="width:100%" dropdown
ng-class="{disabledFunctionalityAndClick:isReadOnly}">
<a class="vl-dropdown-toggle vl-pf-dd-button" dropdown-toggle>
<span class="caret"></span>
</a>
<div style="overflow: hidden;">
<input placeholder="Select a discount table" class="vl-autocomplete um-dd-input"
ng-model="selectedTypeaheadValue"
typeahead="discount as discount.id for discount in discountTablePool | filter:$viewValue"
typeahead-on-select="selectDiscountTable($item)"
typeahead-editable="false"
ng-blur="validateSelectedDiscount($viewValue)"/>
</div>
<ul class="dropdown-menu" role="menu">
<li ng-repeat="discountTable in discountTablePool track by $index">
<a href dropdown-toggle ng-click="selectDiscountTable(discountTable)">{{discountTable
.id}}</a>
</li>
</ul>
</div>
Я также даю пользователю возможность переименовать текущее выбранное значение, нажав кнопку, которая открывает модальное окно:
<a class="um-menu-label" ng-click="renameDiscountTable()">Rename </a>
как только пользователь обновил значение и нажал «ОК», я называю это:
modalInstance.result.then(function (data) {
if ($scope.selectedDiscountTable.id != data.name) {
if ($scope.selectedDiscountTable.isFromServer === true) {
//check if it was already renamed
var obj = _.find($scope.renamedDiscountTables, {newName: $scope.selectedDiscountTable.id});
if (obj) {
obj.newName = data.name;
}
else {
$scope.renamedDiscountTables.push({
oldName: $scope.selectedDiscountTable.id,
newName: data.name
});
}
}
$scope.selectedDiscountTable.id = data.name;
//THIS IS WHERE I CHANGE THE TYPEAHEAD MODEL VALUE
$scope.selectDiscountTable($scope.selectedDiscountTable);
}
}
$scope.selectDiscountTable = function (discount) {
$scope.selectedDiscountTable = discount;
$scope.selectedTypeaheadValue = angular.copy($scope.selectedDiscountTable);
};
Проблема в том, что модель ($scope.selectedTypeaheadValue)
обновляется, но значение, отображаемое пользователю, остается прежним, поэтому, если я переименовал Discount1 в Discount2, модель обновится, но пользователь все равно увидит скидку1: