Angularjs: Как заставить ui-select иметь только одностороннюю привязку модели?
С помощью директивы angularjs navite select привязка модели осуществляется только одним способом, тогда как в ui-select это всегда двусторонняя привязка.
<ui-select ng-model="uiSelected.animal">
<ui-select-match>
<span ng-bind="$select.selected.name"></span>
</ui-select-match>
<ui-select-choices repeat="animal in (animals | filter: $select.search) track by $index">
<span ng-bind="animal.name"></span>
</ui-select-choices>
</ui-select>
Вот плункер, демонстрирующий мою проблему: https://plnkr.co/edit/FkZsFcMrTveWjXR5HNyT?p=preview
Моя проблема:
Как сделать ui-select, чтобы привязка к модели осуществлялась только в одном направлении, чтобы при изменении выбранной области действия она не привязывалась к ui-select? Если я перефразирую: как заставить ui-select действовать как угловое выделение?
2 ответа
Возможно, вам придется добавить $watch к животному / машине и сохранить выбранный объект в другой переменной $scope. Я не вижу другого пути, так как uiSelected ссылки на объект в массиве животных.
Использовать событие on-select:
on-select="onSelectCallback($item, $model)"
Посмотрите на этот плункер: https://plnkr.co/edit/Zcb9xlPm6TW7DFk1sjAO?p=preview
Используйте однонаправленное связывание с этим,
{{::animal.name}}