简体   繁体   English

显示AngularJS Dropdown Multiselect已选中

[英]Show AngularJS Dropdown Multiselect checkeds

I was made a simple dropdownList using AngularJS Dropdown Multiselect and II'd like to show in page the names Ids checkeds but it is showing only the IDs. 我使用AngularJS Dropdown Multiselect创建了一个简单的dropdownList,我想在页面中显示Ids检查的名称,但只显示ID。

在此处输入图片说明

How can I do It ? 我该怎么做 ?

Below or in my GitHub code: GitHub : all code here to download 在我的GitHub代码下面或其中: GitHub此处下载所有代码

  • Html page: index.html HTML页面:index.html
  • Angular app: "MyApp.js" 角度应用:“ MyApp.js”
  • DropDown directive: AngularJS Dropdown Multiselect DropDown指令:AngularJS Dropdown Multiselect

    Html page: index.html HTML页面:index.html

     <h2>Multiselect dropdown with checkbox in angularjs</h2> <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.2.0/css/bootstrap.min.css" /> <script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.0/angular.js"></script> <script src="http://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.js"></script> <!-- <script src="~/Scripts/angularjs-dropdown-multiselect.js"></script> --> <!-- <script src="~/Scripts/MyApp.js"></script> --> <script src="angularjs-dropdown-multiselect.js"></script> <script src="MyApp.js"></script> <div ng-app="MyApp" ng-controller="multiselectdropdown"> <div class="container" style="margin:50px"> <form class="form-inline" name="myForm" role="form" ng-submit="SubmitData()"> <div class="form-group"> <label>Subscribe for categories : </label> <div ng-dropdown-multiselect="" extra-settings="dropdownSetting" options="Categories" selected-model="CategoriesSelected" checkboxes="true"></div> <div ng-dropdown-multiselect="" extra-settings="dropdownSetting" options="Categories" selected-model="CategoriesSelected" styleActive="true"></div> <div ng-dropdown-multiselect="" extra-settings="dropdownSetting" options="Categories" selected-model="CategoriesSelected2" styleActive="true"></div> </div> <button type="submit" class="btn btn-primary">Submit</button> <button type="button" class="btn btn-secoundary" ng-click="EnviarSelecionados()">Enviar Selecionados!</button> </form> <div> <h2>Show Selecteds</h2> <br/> <pre ng-repeat="catsel in CategoriesSelected"> Person ID:{{catsel.id}} <br/> Person Name:{{catsel.label}} </pre> </div> <!-- <div style="margin-top:40px" ng-if="SubmittedCategories.length > 0"> --> <!-- <h2>Selected Categories</h2> --> <!-- <table class="table table-responsive table-bordered"> --> <!-- <thead> --> <!-- <tr> --> <!-- <th>ID</th> --> <!-- <th>Category Name</th> --> <!-- </tr> --> <!-- </thead> --> <!-- <tbody> --> <!-- <tr ng-repeat="cat in SubmittedCategories"> --> <!-- <td>{{cat.CategoryID}}</td> --> <!-- <td>{{cat.CategoryName}}</td> --> <!-- </tr> --> <!-- </tbody> --> <!-- </table> --> <!-- </div> --> <div style="margin-top:40px" ng-if="SubmittedCategories.length > 0"> <h2>Selected Categories</h2> <table class="table table-responsive table-bordered"> <thead> <tr> <th>ID</th> <th>Category Name</th> </tr> </thead> <tbody> <tr ng-repeat="cat in SubmittedCategories"> <td>{{cat.CategoryID}}</td> <td>{{cat.CategoryName}}</td> </tr> </tbody> </table> </div> </div> </div> 

Angular app: "MyApp.js" 角度应用:“ MyApp.js”

var app = angular.module('MyApp', ['angularjs-dropdown-multiselect']);
app.controller('multiselectdropdown', ['$scope', '$http', function ($scope, $http) {
    //define object 
    $scope.CategoriesSelected = [];
    $scope.Categories = [];
    $scope.dropdownSetting = {
        scrollable: true,
        enableSearch: true, 
        scrollableHeight : '200px',
        closeOnBlur: false,
        showCheckAll: false,
        checkBoxes: false,
        displayProp: 'label', // se colocar id funciona 
        smartButtonMaxItems: 5
      }
    //fetch data from database for show in multiselect dropdown
    /*$http.get('/home/getcategories').then(function (data) {
        angular.forEach(data.data, function (value, index) {
            $scope.Categories.push({ id: value.CategoryID, label: value.CategoryName });
        });
    })*/

     $scope.Categories = [{id: 1, label: "David"}, {id: 2, label: "Jhon"}, {id: 3, label: "Danny"}];
     $scope.CategoriesSelected2 = [$scope.Categories[0], $scope.Categories[1]];

    //$scope.Categories.push({id: 1, label: "David"}, {id: 2, label: "Jhon"}, {id: 3, label: "Danny"});
    //post or submit selected items from multiselect dropdown to server
    $scope.SubmittedCategories = [];

    $scope.EnviarSelecionados = function(){
        var result = $scope.CategoriesSelected;
    }


    $scope.SubmitData = function () {
        var categoryIds = [];
        angular.forEach($scope.CategoriesSelected, function (value, index) {
            categoryIds.push(value.id);
        });

        var data = {
            categoryIds: categoryIds
        };

        /*$http({
            method: "POST",
            url: "/home/savedata",
            data:JSON.stringify(data)
        }).then(function (data) {
            $scope.SubmittedCategories = data.data;
        }, function (error) {
            alert('Error');
        })*/
    }
}])

Update your angularjs-dropdown-multiselect.js file's getFindObj(id) function with this.. angularjs-dropdown-multiselect.js更新您的angularjs-dropdown-multiselect.js multiselect.js文件的getFindObj(id)函数。

            function getFindObj(id) {
                var findObj = {};

                if ($scope.settings.externalIdProp === '') {
                    findObj[$scope.settings.idProp] = id;

                } else {
                    findObj[$scope.settings.externalIdProp] = id;
                    angular.forEach($scope.options, function (value, index) {
                        if(value.id == id){
                            findObj.label = value.label;
                        }
                    });
                }

                return findObj;
            }

I hope this will resolve your problem :) 我希望这可以解决您的问题:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM