2016-10-05 4 views
0

У меня есть угловое приложение, которое используется в CMS. Команда маркетинга может создать форму, добавив html в виджет, используя простой html. То, что я пытаюсь сделать, - уловить вопрос, заданный в форме и ответе пользователя, чтобы я мог сохранить это в пару вопросов/ответов в db.angularjs - Как связать метку или атрибут с элементом управления в angularjs?

Я могу использовать ng-model, чтобы получить введенное значение, однако я не уверен, как задать вопрос. Решение не может требовать чтения вопросов из массива js. Они должны вводиться в разметку через виджет содержимого.

Я думаю что-то вроде Label for, тип поведения модели ng для <span> или добавление атрибута в элемент управления, который содержит заданный вопрос.

Спасибо.

<span ng-model="user.favoriteColor.label">Favorite color:</span> 
    <input type="text" id="favoriteColor" ng-model="user.favoriteColor"> 

Вот звенеть из основного примера: Plunk

Моя цель состоит в том, чтобы в конечном итоге с объектом, который содержит значение из <span> или label для вопроса и ответа. Это будет выглядеть так, когда я отправляю:

[ 
    {questionText: 'Favorite color?', answer: 'red'}, 
    {questionText: 'Favorite food?', answer: 'pizza'}, 
    etc... 
    ] 
+0

@jrath не может использовать ng-model на скрытом входе – charlietfl

+1

как вы пар вопросов/ответов сохраняетесь в вашей базе данных? Они в одном столе? –

+0

Действительно непонятно, какая конкретная проблема здесь. Недостаточно подробностей, связанных с этими вопросами и их сохранением. – charlietfl

ответ

0

Вот Plunk, как я решил эту проблему.

<span id="q1Label">Question 1:</span> 
    <input type="text" id="q1" ng-model="questions[0].questionResponse" ng-blur="getQuestionAndAnswer($event,0)" /> 

    $scope.questions=[]; 
    $scope.getQuestionAndAnswer = function(event, arrayIndex) { 
    var questionId = event.target.id; 
    var questionLabelId = questionId + "Label"; 

    $scope.questions[arrayIndex].questionId = questionId; 

    var questionText = document.getElementById(questionLabelId).textContent; 
    $scope.questions[arrayIndex].questionText = questionText; 

    $scope.questions.push({ 
    'questionText':questionText, 
    'questionResponse': scope.questions[arrayIndex].questionResponse, 
    'questionId': questionId 
    }); 
    }