Я использую https://github.com/localytics/angular-chosen, чтобы можно было выбирать теги с возможностью поиска для многих параметров.
Проблема, с которой я сталкиваюсь, заключается в предварительном выборе опции для уже сохраненного объекта поставщика. При создании нового есть проблема, но если мы просматриваем существующего поставщика, я хочу показать имя поставщика в поле выбора, а не в качестве заполнителя.
<select chosen
ng-model="myVendor"
ng-options="vendor['public-id'] as vendor.name for vendor in vendors"
data-placeholder="Nah">
</select>
И в моем контроллере я устанавливаю модель вручную $scope.myVendor = "Some value"
Проблема в том, что я заполняю опции с помощью объекта вместо ключа/значения. Я нашел пример его работы с ключом/значением, но не успел адаптировать его к объектам в качестве параметров.
Я даже пытался установить myVendor
на соответствующий объект, который я хочу выбрать, без везения.
Я обновил плункер и изменил свои предыдущие изменения в плагине. это не проблема. Я не понимаю, как это давало мне ошибки. Решение состоит в том, чтобы отслеживать с объектом и двумя функциями идентификатор и имя:
//Контроллер
$scope.vendors = [
{
"public-id": "1234",
"name": "stugg"
},
{
"public-id": "4321",
"name": "pugg"
}
];
$scope.myVendor = {name: "pugg", id:""};
$scope.updateMyVendorName = function () {
var found = false,
i = 0;
while (!found && i < $scope.vendors.length) {
found = $scope.vendors[i]['public-id'] === $scope.myVendor.id;
if (found) {
$scope.myVendor.name = $scope.vendors[i].name;
}
i++;
}
}
findVendorByName();
function findVendorByName () {
var found = false,
i = 0;
while (!found && i < $scope.vendors.length) {
found = $scope.vendors[i]['name'] === $scope.myVendor.name;
if (found) {
$scope.myVendor.id = $scope.vendors[i]['public-id'];
}
i++;
}
}
//шаблон
<select chosen class="form-control span6" ng-options="vendor['public-id'] as vendor.name for vendor in vendors" ng-model="myVendor.id" ng-change="updateMyVendorName()">
{{myVendor.name}}
pugg
выбранного в плунжере, который вы связали.