Установка значения по умолчанию для ‹select› с помощью Angular.JS

Предположим, у вас есть длинная HTML-форма, в которой у вас есть выбор следующим образом:

<select id="select_id" ng-model="var2model" ng-options="i for i in ['a','b','c','d','e','f','g','h']"></select>

и в контроллере у вас есть переменная $scope.res, в которой хранятся некоторые данные для заполнения формы. Как установить это значение по умолчанию? Я проверил ng-init, но не смог заставить его работать. Я пытался установить ng-init="i === res.my_var", но безуспешно. Может ли кто-нибудь предложить подход к решению этой проблемы?

Вот фрагмент моего контроллера:

var ctrlRes = controllers.controller('ctrlRes', function ($scope, $location, $window, Patient) {
    $window.document.title = 'Results';

    var path = $location.path().split('/');
    var query = path[path.length - 1];
    Patient.get({id: query}, function(data){
        $scope.res = data;
    });

    $scope.editMode = false;
    $scope.editData = function () {
        console.log('editMode on');
        $scope.editMode = true;
        $scope.my_var = $scope.res.my_var;
    };
});
ctrlRes.$inject = ['$scope', 'Patient'];

person ftabaro    schedule 28.05.2015    source источник


Ответы (4)


  1. Для выбора ввода вы используете var2model в качестве модели ввода. Поэтому для предоставления значения по умолчанию вы должны присвоить значение этому объекту модели.

  2. Для выбора, чтобы присвоить значение по умолчанию, вы должны присвоить значение из массива, который вы используете, чтобы поместить значения в параметры выбора.

Итак, вы можете сделать следующее:

    var ctrlRes = controllers.controller('ctrlRes', function ($scope, $location, $window, Patient) {
        $window.document.title = 'Results';

        var path = $location.path().split('/');
        var query = path[path.length - 1];
        Patient.get({id: query}, function(data){
            $scope.res = data;
        });

        $scope.selectArray = ['a','b','c','d','e','f','g','h'];
        var index = $scope.selectArray.indexOf($scope.res.my_var);
        $scope.var2model = $scope.selectArray[index];


        $scope.editMode = false;
        $scope.editData = function () {
            console.log('editMode on');
            $scope.editMode = true;
            $scope.my_var = $scope.res.my_var;
        };
    });
    ctrlRes.$inject = ['$scope', 'Patient'];


    <select id="select_id" ng-model="var2model" ng-options="i for i in selectArray"></select>
person Yashika Garg    schedule 28.05.2015

Вам нужно установить значение для var2model в вашем контроллере: Ex: $scope.var2model = 'a'

person dieuvn3b    schedule 28.05.2015

В контроллере после получения данных из службы Patient вы должны инициализировать var2model значением по умолчанию.

person Mikalai    schedule 28.05.2015

Просто установите $scope.var2model = 'a' и удалите ng-init. У Ng-init есть еще одна цель из их документов:

Единственное подходящее использование ngInit — это псевдоним специальных свойств ngRepeat, как показано в демонстрации ниже. Помимо этого случая, вы должны использовать контроллеры, а не ngInit для инициализации значений в области видимости.

person Alexandru R    schedule 28.05.2015