Радиокнопка Angular JS автоматически добавляет имя атрибута

0

Я генерирую динамически html-элемент на странице при событии drop с jquery. После его создания я компилирую метод $ compile для угловых js. Мой код jquery: -

$('#divcontainer').droppable({   //make icon image droppable. 
        drop: function(event, ui)
        {
            $('#droppable_video_cotainer').removeClass('col-lg-12 col-md-12 col-sm-12 col-xs-12').addClass('col-lg-7 col-md-7 col-sm-7 col-xs-12');
            var id = ui.draggable.attr("id");
            if(id == 'multiple_choice_question')
            {
                var div= '<div class="box box-mintgreen box-solid video-edit">';
                div+='<div class="box-header with-border">';
                div+= '<h3 class="box-title"><i class="fa fa-question-circle"></i> Quiz</h3>';
                div+='<div class="box-tools pull-right">';
                div+='<button class="btn btn-box-tool clickable" data-widget="remove" data-effect="fadeOut"><i class="fa fa-times"></i></button>';          
                div+='</div></div>';
                div+='<div class="box-body">';
                div+='<textarea style="width: 410px;" ng-model="videoCourseQuestions.mcss_question" rows="5"></textarea>';
                div+='<a id="mcss_add_option" align="center" style="cursor:pointer"> +Add option</a></br>';
                div+='<div id="addRdo" class="quiz-ans"> ';
                div+='<ul   class="mcss_option_list" id="mcss_option_list">';
                div+='<li><input type="radio" id="mcq_option1" ng-model="videoCourseQuestions.mcss_option" ng-value="option1"><input type="text" id="mcq_option#1" class="option" ng-model="videoCourseQuestions.mcss_option_1" placeholder="Enter your Option 1"/></li>';
                div+='<li><input type="radio" id="mcq_option2" ng-model="videoCourseQuestions.mcss_option" ng-value="option2"><input type="text" id="mcq_option#2" class="option" ng-model="videoCourseQuestions.mcss_option_2" placeholder="Enter your option 2"/></li>';
                div+='<li><input type="radio" id="mcq_option3" ng-model="videoCourseQuestions.mcss_option" ng-value="option3"><input type="text" id="mcq_option#3" class="option" ng-model="videoCourseQuestions.mcss_option_3" placeholder="Enter your option 3"/></li>';
                div+='<li><input type="radio" id="mcq_option4" ng-model="videoCourseQuestions.mcss_option" ng-value="option4"><input type="text" id="mcq_option#4" class="option" ng-model="videoCourseQuestions.mcss_option_4" placeholder="Enter your option 4"/></li>';
                div+='</ul>';
                div+='</div>';
                div+='<p class="sub"><input type="button" id="mscc_question_submit" class="btn btn-danger" set-on-click value="Submit"> <input type="reset" ng-model="mcss_btnreset" class="btn btn-default" value="Cancel"> </p>';
                div+='<ul class="box-footer">';
                div+='<li><i class="fa fa-clock-o"></i> save at <span>05:55</span></li>';
                div+='<li><i class="fa fa-pencil-square-o"></i> Update : <span>08:20</span></li>';
                div+='</ul>';
                div+='</div></div>';
                $('#Droppable_container').html(div);

                var $scope = angular.element('#Droppable_container').scope();
                $scope.compileElement('#Droppable_container');  
});

И compileElement углового метода определяется как: -

$scope.compileElement = function(element){
        $compile(element)($scope);
    };

Все работает нормально. Html генерируется отлично, и ng-click также работает нормально. Но в переключателях автоматически добавляется атрибут имени, такой как name = "004" и name = "005" всем переключателям и переключателям с выбранными. Почему атрибут name добавляется в переключатели?

Теги:

1 ответ

1
Лучший ответ

Поскольку имя является обязательным атрибутом, без него радиокнопки не имеют никакого смысла. Они группируются в соответствии с их именем. См. Спецификации.

Обратите внимание, что ваш код трудно читать, неэффективен и нарушает угловые лучшие практики. Мой совет: если вы действительно хотите использовать и изучать угловые, прекратите использовать jQuery. Единственный раз, когда использование jQuery было бы в порядке в соответствии с лучшими рекомендациями, это когда вы пишете свои собственные директивы.

Угловое - это все о директивах. Исследуйте их, используйте их, пишите сами !

Например, вместо того, чтобы назначать строки строковой переменной div (которые вы, вероятно, делаете в контроллере), используйте директиву и поместите все html в шаблон.

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

  • 0
    это полезная информация для меня. Я новичок в использовании угловых, так что понятия не имею об этом. Я постараюсь использовать директивы. :) @Kevin

Ещё вопросы

Сообщество Overcoder
Наверх
Меню