Невозможно назначить значение по умолчанию из директивы костюма для выбора элемента управления - PullRequest
1 голос
/ 26 сентября 2019

У меня есть простой сценарий с директивой костюма в angularjs.В котором, если в выпадающем списке будет только один элемент, он будет выбран по умолчанию, иначе он будет работать как обычный выпадающий список.

, для этого я пытаюсь использовать код ниже,

var app = angular.module("testapp", []);
(function () {
    'use strict';
    angular.module('testapp').controller('TestCtrl', ['$scope', TestCtrl]);
    function TestCtrl($scope) {
        $scope.Test=[];
        $scope.Test.id=0;
        $scope.data = [{
            "id": 1,
            "name": "abc"            
        }];
    }
})()

angular.module('testapp').directive('advanceDropdown', function () {
    var directive = {}
    directive.restrict = 'A';   
    directive.require = 'ngModel';
    directive.scope = {
        items: '=advanceDropdown'

    }
    directive.link = function (scope, element, attrs, ctrl) {
        if (scope.items.length == 1) {
            element.val(scope.items[0]);
        }
    }
    return directive;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular.min.js"></script>
<div ng-app="testapp" ng-controller="TestCtrl"> 
      <select name="ddlTest" ng-model="Test.id"  ng-options="d.id as d.name for d in data" advance-dropdown="data"  required>
                <option value="" ng-selected="selected" disabled>--Select--</option>
       </select>
</div>

, но это не может работать.чего мне не хватает в коде.

1 Ответ

1 голос
/ 26 сентября 2019

Ваш код правильный, только небольшая проблема внутри директивы, попробуйте следующее, пожалуйста

directive.link = function (scope, element, attrs, ctrl) {
    if (scope.items.length == 1) {
        element.val = scope.items[0];
    }
}

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...