Angular Js将数组从动态ng-repeat指令推送到控制器

时间:2017-09-28 22:20:06

标签: javascript angularjs

我需要一个大忙。我有这个ng-repeat指令

appTitan.directive('questionsAnswers', function() {
    return {
        restrict: 'E',
        templateUrl: '/js/directives/questionsAnswers.html',
        replace: true,
        scope: {
            questions: '=',
            chosenAnswersArr: '='
        },
        link: function(scope) {
            scope.chosenAnswers = function(selection) {
                scope.chosenAnswersArr.push(selection);
            };
        }
    };
});

这在模板中相应地使用

<div class="question-answers__item__wrapper">
    <div class="question-answers__item__question">
        <h3>{{ questions.questionName }}</h3>
    </div>
    <div class="question-answers__item__answers">
        <ul class="row">
            <li class="col-sm-6" data-answer-item-id="{{questions.answerOne.isCorrect}}" ng-click="chosenAnswers(questions.answerOne.isCorrect)">
                <p>{{questions.answerOne.value}}</p>
            </li>
            <li class="col-sm-6" data-answer-item-id="{{questions.answerTwo.isCorrect}}" ng-click="chosenAnswers(questions.answerTwo.isCorrect)">
                <p>{{questions.answerTwo.value}}</p>
            </li>
            <li class="col-sm-6" data-answer-item-id="{{questions.answerThree.isCorrect}}" ng-click="chosenAnswers(questions.answerThree.isCorrect)">
                <p>{{questions.answerThree.value}}</p>
            </li>
            <li class="col-sm-6" data-answer-item-id="{{questions.answerFour.isCorrect}}" ng-click="chosenAnswers(questions.answerFour.isCorrect)">
                <p>{{questions.answerFour.value}}</p>
            </li>
        </ul>
    </div>
</div>

并以HTML格式添加

<li class="question-answers__item" ng-repeat="questions in quizData.questionAndAnswers" elem-height>
    <questions-answers questions="questions" chosenAnswersArr="chosenAnswersArr"></questions-answers>
</li>

我在模板中选择了这个答案点击功能。

这是我的控制器

appTitan.controller('MainController', ['$scope', '$http', '$location', function($scope, $http, $location) {
    'use strict';

    //Generate scores
    $scope.chosenAnswersArr = [];

}]);

我无法将数据从指令推送到控制器。我需要做些什么才能使它发挥作用。 我得到的错误是

angular-1.4.8.min.js:107 TypeError: Cannot read property 'push' of undefined

我确实尝试将控制器属性(MainController)添加到指令中,但它正在破坏数据。请注意,使用$ http.get(我没有在这里添加该行)使用相同的控制器来拉取数据。我提到这个是因为让你知道数据是动态的。

如何将数据从我的指令推送到控制器?

0 个答案:

没有答案