AngularJS:在.post()

时间:2016-05-07 09:31:31

标签: javascript angularjs

我正在努力学习发展,如果我有点不知情,那就很抱歉。我试着在这里寻找解决方案。 我必须发表评论并回复应用。我正在使用此功能向我的视图添加注释。

$scope.insertComment = function(){

    var new_comment_id = $scope.comments[$scope.comments.length - 1].commentID +1;
    var input = {
        "commentID" : new_comment_id,
        "userID": user.user_id,
        "name": user.user_name,
        "avatar_url": user.avatar,
        "says": $scope.new_comment,
        "likes": 0,
        "like_status": false,
        "replies": [] 
    };
    //Pushes changes to the global comment object
    $scope.comments.push(input);
    $scope.new_comment = '';
}

每个评论都有回复选项,以下事件显示一个表单以添加对评论的回复。

$(".no-url").click(function(){
    console.log('test2');
    $(this).parent().children('.reply-form').addClass('active');
});

我的问题是,当我添加新注释时,它没有与之关联的事件侦听器。怎么解决这个问题?

3 个答案:

答案 0 :(得分:1)

$(SELECTOR)将仅选择DOM中存在的那些元素。

可以使用

Event-Delegation

$(PARENT_SELECTOR).on('click', '.no-url', function() {
  $(this).parent().children('.reply-form').addClass('active');
});

但更好和推荐的解决方案是使用ng-click指令。

答案 1 :(得分:1)

directivejQLite

一起使用

HTML:

 <div comment-click> 
    //your comment html will goes here.
 </div>

JS:

app.directive("commentClick",function(){

    return {
        link : function(scope,ele,attr){

            ele.on('click',function(){

                //put here your commnet scropt

            })
        }
    }
})

将此comment-click属性添加到您要在其上绑定点击事件的新添加的DOME元素

答案 2 :(得分:1)

以下是简单的代码,如何只使用angularjs而不涉及jQuery

.parent{
  position: relative;
  width: 300px;
  height: 150px;
  border: 1px solid black;
  overflow: hidden;
}
.child{
  height: 150px;
  width: 312px;
  padding-right:15px;/* change as per your browser scroll*/
  overflow-y: scroll;
}