2017-02-02 5 views
0

Я пытаюсь создать виджет выбора с помощью опций Angular's ng. У меня это до сих пор:Использование ng-опций с ng-изменением в форме ввода формы

<select id="id_question" name="question" ng-model="post.Question" 
    ng-options="question.id as question.title for question in questions" 
    ng-change="updateFields(post.Question)" required> 
</select> 

Мне нужен объект, переданный как параметр в метод «updateFields». Однако из-за ng-опций с использованием «id» это невозможно.

Как сохранить идентификатор в качестве значения в элементе выбора, но также иметь возможность передать объект «вопрос» в качестве параметра в ng-change?

ответ

1

Невозможно передать полный объект в вашу функцию, если вы используете ng-options. Вместо этого вы можете установить свою ng-модель в какое-либо другое свойство и использовать это свойство для присвоения значения переменной post.Question.

<select name="question" ng-model="selectedValue" 
     ng-options="question as question.title for question in questions" 
     ng-change="updateFields(selectedValue)" required> 
</select> 

в JS

$scope.updateFields = function(question) { 

     $scope.id = $scope.selectedvalue.id; 
     console.log(question); 
    } 

Пожалуйста, посмотрите на plunker

1

Если когда-нибудь вы используете нг-модель для выбора элемента вам не нужно передать выбранный объект в качестве параметра события в нг -изменение.

Посмотрите на приведенный ниже код

$scope.updateFields=function(){ 
     console.log($scope.selectedQuestion); 
    } 

Ваш HTML должен быть

<select name="question" ng-model="selectedQuestion" 
    ng-options="question as question.title for question in questions" 
    ng-change="updateFields()" required> 

LIVE DEMO

ВОЗЛАГАЕТСЯ JSON

$scope.questions=[ 
    {title:'A',id:1}, 
    {title:'Abcdef',id:4}]; 
+0

Элемент является частью динамической ng-формы. Это подэлемент большой формы с использованием ng-repeat, поэтому его можно добавлять/удалять динамически. Поэтому, вероятно, доступ к нему не может быть легко доступен. Поэтому я использовал параметр в этом случае. – zubhav

+0

да, но ** ng-model = selectedQuestion ** соответствует только этой операции выбора. Также ваш пост не передает ** ng-repeat ** – Aravind

Смежные вопросы