2017-02-22 24 views
0

Нет обнаружения AngularJS после дописывания DIV в JQuery

$('button.op_comm_now').one('click', function() { 
 
    $(this).parent().before('<div class="comment_box_all" ng-controller="votesController"></div>'); 
 
}).click(function() { 
 
    var panel = $(this).closest('.area_comm_tex'); 
 
    var commentBox = panel.prev('.comment_box_all'); 
 
    var content = document.createElement("span"); 
 
    content.innerHTML = panel.find('.text_area').val().replace(/(\n|\r|\r\n)/g, '<br>'); 
 
    commentBox.append('<div class="comment_user"><div ng-repeat="vote in votes"> <div class="comment_note_11" ><a ng-click="incrementLikes(vote)" class="vote_comment_11"></a><span class="num_vote_comm_11">{{vote.Likes}}</span><a ng-click="decrementLikes(vote)" class="vote_dis_like_comm_un11"></a></div></div><div class="content_text_user_ans"></div></div>'); 
 
    commentBox.find('.content_text_user_ans').last().html(content); 
 
}); 
 

 
var myApp = angular.module("myApp", []); 
 
myApp.controller("votesController", function($scope) { 
 
    var votes = [{ 
 
    Likes: "0" 
 
    }, ]; 
 
    $scope.votes = votes; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="container" ng-app="myApp"> 
 
    <div class="area_comm_tex"> 
 
    <textarea class="text_area" placeholder="Add comment"></textarea> 
 
    <button class="op_comm_now">Add text</button> 
 
    </div> 
 
</div>

Эй, ребята, У меня есть небольшая проблема, потому что AngularJS в данном случае не "обнаружить". Попробуйте нажать button и появится {{vote.Likes}}, но должно появиться «0», как и в моем $scope.votes. Спасибо за помощь

+0

в вашем commandBox вы разбираете строку HTML кода с помощью '«»' кавычки, где вы должны использовать 'для многострочных HTML код в JS. – Smit

ответ

1

Я бы рекомендовал вам сделать это только с угловым. Например.

var myApp = angular.module("myApp", []); 
 
myApp.controller("votesController", ['$scope', function($scope, $timeout) { 
 
    $scope.comments = [{ 
 
     comment: "blah", 
 
     likes: 1 
 
    }, 
 
    { 
 
     comment: "blah2", 
 
     likes: 0 
 
    } 
 
    ]; 
 
    $scope.newComment = { 
 
    comment: "", 
 
    likes: 0 
 
    }; 
 
    $scope.createComment = function() { 
 
    if ($scope.newComment.comment != "") { 
 
     $scope.comments.push({ 
 
     comment: $scope.newComment.comment, 
 
     likes: $scope.newComment.likes 
 
     }); 
 
    } 
 
    }; 
 
    $scope.incrementLikes = function(comment, idx) { 
 
    comment.likes++; 
 
    $scope.comments[idx] = comment; 
 
    }; 
 
    $scope.decrementLikes = function(comment, idx) { 
 
    comment.likes--; 
 
    $scope.comments[idx] = comment; 
 
    }; 
 
}]);
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 

 
<div class="container" ng-app="myApp"> 
 
    <div ng-controller="votesController"> 
 
    <div ng-repeat="comment in comments"> 
 
     <div class="comment_box_all"> 
 
     <div class="comment_user"> 
 
      <div class="comment_note"> 
 
      <a ng-click="incrementLikes(comment, $index)" class="vote_comment">Like</a> 
 
      <span class="num_vote_comm_11"> | {{comment.likes}} | </span> 
 
      <a ng-click="decrementLikes(comment, $index)" class="vote_dis_like_comm">Unlike</a> 
 
      </div> 
 
      <div class="content_text_user_ans"><span>{{comment.comment}}</span></div> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    <div class="area_comm_tex"> 
 
     <textarea class="text_area" ng-model="newComment.comment" placeholder="Add comment"></textarea> 
 
     <button class="op_comm_now" ng-click="createComment()">Add text</button> 
 
    </div> 
 
    <pre>{{comments}}</pre> 
 
    </div> 
 
</div>

+0

спасибо за ответ, но не хочу этот код в html, я бы хотел ввести этот код html из сценария (так что я использовал append) после нажатия, например. текст «Добавить комментарий». Я пытаюсь создать систему комментариев что-то вроде Stackoverflow –

+0

вообще, это возможно добавить html-код в jquery с угловыми элементами? И это будет работа? –

+0

Я по-прежнему предпочитаю делать это по Угловому пути. Но если вы настаиваете на этом, вы можете попробовать что-то вроде этого: https://gist.github.com/umidjons/1fb8ae674df4c71f85cf – davcs86

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

  • Нет связанных вопросов^_^