Multiselect Dropdown - Показать выбранные данные на кнопке

У меня есть выпадающий список с множественным выбором, который выбирает данные из базы данных. Есть предварительно выбранные данные, которые мне нужно отображать при загрузке страницы вместо отображения слова "Пожалуйста, выберите". Я использую angularjs и javascript. Как я могу это сделать? Мой код выглядит так:

<div class="btn-group col-md-6 pull-right">
   <button data-toggle="dropdown" class="col-xs-12 btn btn-primary dropdown-toggle"  >---Please select---{{item.skin_type_name}}<span class="caret"></span></button>
    <ul class="dropdown-menu">
        <li ng-repeat="item in SkinType">
            <input type="checkbox" id={{item.skin_type_id}} name="NAME2" value="{{item.skin_type_id}}" ng-checked="skintypeID[item.skin_type_id]==item.skin_type_id" ng-click="skntypclk(item.skin_type_id)" ng-disabled="currreadstypepro==1" ng-required="curstyp==1"><label>{{item.skin_type_name}}</label>
        </li>
    </ul>

Я использую API для извлечения данных из базы данных, и это выглядит так:

editorService.editSkintype(id)
            .then(function(data){
                $rootScope.loadercount--;
                console.log($rootScope.loadercount);
                skintypeIDArr = {};
                angular.forEach(data.data, function(value) {
                    angular.forEach(value, function(value, key) {
                        if(key == "skin_type_id"){
                            skintype[value] = value;
                            skintypeIDArr[value] = value;
                        }
                    });
                });
                $scope.skintypeID = skintypeIDArr;
            })

Как я могу отобразить предварительно выбранное значение на кнопке вместо "Пожалуйста, выберите"? Данные могут отображаться только после того, как я отредактирую значения, но мне нужно отобразить предварительно выбранное значение при загрузке страницы. Как я могу это сделать?

1 ответ

Убедитесь, что выбранный в данный момент элемент находится в области видимости. поэтому HTML будет:

<div class="btn-group col-md-6 pull-right">
   <button data-toggle="dropdown" class="col-xs-12 btn btn-primary dropdown-toggle">{{selectedItem.skin_type_name}}<span class="caret"></span></button>
    <ul class="dropdown-menu">
        <li ng-repeat="item in SkinType">
            <input type="checkbox" id={{item.skin_type_id}} name="NAME2" value="{{item.skin_type_id}}" ng-checked="skintypeID[item.skin_type_id]==item.skin_type_id" ng-click="skntypclk(item.skin_type_id)" ng-disabled="currreadstypepro==1" ng-required="curstyp==1"><label>{{item.skin_type_name}}</label>
        </li>
    </ul>
</div>

Если это так, то в вашем контроллере вы можете просто загрузить значение по умолчанию и затем запустить вызов API:

app.controller('ctrl', function($scope) {
    $scope.selectedItem = {
        skin_type_name: "Preselected Data"
    };
    // Now run the API call...
});

Таким образом, предварительно выбранные данные будут установлены при загрузке контроллера.

Если вам нужно, чтобы он находился вне контроллера, объявите selectedItem в $rootScope вместо.

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