ui-select f.selected未定义

时间:2016-07-21 22:01:42

标签: angularjs ui-select

我正在尝试在我的应用中选择>。<它给了我很多麻烦。我已经按照示例和文档进行操作,我无法理解我在这里做错了什么。

这是我的HTML:

<div class="form-group">
    <label class="control-label small">User Roles</label>
    <ui-select multiple ng-model="vm.form.roles" ng-disabled="disabled">
        <ui-select-match placeholder="Select roles">{{$item}}</ui-select-match>
        <ui-select-choices repeat="role.id as role in vm.roles | filter:$select.search">
            {{role.name}}
        </ui-select-choices>
    </ui-select>
</div>

这是我的控制者:

angular.module('app.ctrls')
    .controller('UsersCtrl', UsersCtrl);

// Injecting Dependencies
UsersCtrl.$inject = ['$scope', '$state', '$stateParams', 'Role', 'User'];

// Controller Function
function UsersCtrl($scope, $state, $stateParams, $r, $u) {
    var vm = this;

    vm.form = {};
    vm.form.roles = [];
    vm.users = [];
    vm.roles = [];

    vm.messageBag = [];
    vm.errorBag = [];

    vm.getAllRoles = function() {
        $r.get()
            .success(function (response, status, headers, config) {
                vm.messageBag = response.messages;
                vm.roles = response.data;
                for (var i = 0; i < vm.messageBag.length; i++) {
                    $scope.createToast('success', vm.messageBag[i]);
                }
            })
            .error(function (data, status, headers, config) {
                // Clearing Error Bag
                vm.errorBag = [];

                for (var prop in data) {
                    if (data.hasOwnProperty(prop)) {
                        data[prop].forEach(function (msg) {
                            if (vm.errorBag.indexOf(msg) == -1) {
                                vm.errorBag.push(msg);
                            }
                        });
                    }
                }

                for (var i = 0; i < vm.errorBag.length; i++) {
                    $scope.createToast('danger', vm.errorBag[i]);
                }
            });
    };


    // Controller Initialiser
    vm.init = function() {
        //
    };

    // Initialising Controller
    vm.init();

}

这是我加载页面时在控制台中出现的错误:

  

错误:f.selected未定义   f.getPlaceholder@http://admin.xxxxxx.app/scripts/lazyload/select.min.js:7:9246   匿名/ FN @ http://admin.xxxxxx.app/scripts/vendors-eb9a79cc0c.js   第14544行&gt;功能:2:258   expressionInputWatch @ http://admin.xxxxxx.app/scripts/vendors-eb9a79cc0c.js:15673:31   $ RootScopeProvider /这$ gethttp://admin.xxxxxx.app/scripts/vendors-eb9a79cc0c.js:17216:34   $ RootScopeProvider /这$ gethttp://admin.xxxxxx.app/scripts/vendors-eb9a79cc0c.js:17491:13   勾选@ http://admin.xxxxxx.app/scripts/vendors-eb9a79cc0c.js:12451:25

     

供应商...... cc0c.js(第13647行)错误:f.selected未定义

我不知道造成这种情况的原因或解决方法。 我的angularjs版本是1.5.6 ui-router版本是0.3.1

不知道它是否与我的代码有关或与另一个插件冲突。

2 个答案:

答案 0 :(得分:0)

不要发现它有什么问题。尝试用Ui-select 18.1在这里重现你的问题:Reproduction也许它是$ item组件(这对我有效)

  <ui-select multiple ng-model="ctrl.address.selected" ng-disabled="disabled">
 <ui-select-match placeholder="Select a person in the list or search his name/age...">{{$select.selected.name}}</ui-select-match>
<ui-select-choices repeat="person in ctrl.people | filter: $select.search">
  <div ng-bind-html="person.name | highlight: $select.search"></div>
  <small>
    email: {{person.email}}
    age: <span ng-bind-html="''+person.age | highlight: $select.search"></span>
  </small>
</ui-select-choices>

根据错误,我认为它无法读取vm.form.roles

答案 1 :(得分:0)

我发现问题显然是你应该添加课程&#34; ui-select-choices&#34;和&#34; ui-select-match&#34;否则它就不会工作。