角度函数不更新

时间:2015-03-31 04:48:18

标签: jquery angularjs

对角度有新意,我被建议不要使用带有jquery的angular,但是,我仍然需要使用jquery,因为它更方便。基本上,我构建一个函数得到一个评论列表

    function showComment(){
        app.controller("commentController", function($scope,$http) {
            var url="/attraction/commentlist";
            var formData = {id:"1"};
            var postData = "data="+JSON.stringify(formData);
            $http.post(url,postData).success(function(response) {
                if(response!=false){
                    if(response.length==0){
                        $("#commenTable").hide();
                    }else{
                        $scope.comments = response;
                    }
                }
            });
        });
    }

然后我想在使用jquery

获取数据时回忆这个​​函数
            $.ajax({url: "/attraction/addcomment", type:"post",data:form.serialize(), success: function(result){
                alert("haha");
                showComment();
                $("#attractioncomment-comment").val("");
                $("#attractioncomment-captcha").val("");
                $.get("/attraction/captcha",{"refresh":1},function(data){
                    $("#attractioncomment-captcha-image").attr("src",data.url);
                });
            }});

失败,showcomment()未使用最新条目进行更新。请帮忙。

2 个答案:

答案 0 :(得分:0)

在showComment()函数中,您只是定义了控制器,但它永远不会被运行。您应该以角度方式定义控制器,并在某些DOM或路径上使用它。

还有一些观点:
 1.你在showComment()函数中创建一个控制器?我从来没有看到那种用法,控制器是否正常工作?  2.您应该使用angularjs的数据绑定来填充注释数据,但不能以jquery方式设置val()  你应该使用ng-show来显示/隐藏某些东西,而不是jquery方式  4.应该使用$ http.get()或post()。

你应该继续使用jquery的唯一原因是,一些js插件或包将使用jquery,你想直接使用它们而不创建一些指令。

答案 1 :(得分:0)

这不是控制器的工作方式,朋友。您不应该直接将控制器作为函数执行。尝试更像

的东西
  app.controller("commentController", function($scope,$http) {

  // Create a function inside the controller
  function showComment() {
    var url="/attraction/commentlist";
    var formData = {id:"1"};
    var postData = "data="+JSON.stringify(formData);
    $http.post(url,postData).success(function(response) {
      if(response !== false){
        if(response.length === 0){
          $("#commenTable").hide();
        }else{
          $scope.comments = response;
        }
      }
    });
  }

  // Execute the function
  showComment();
});

我还没有真正检查过你的其余代码,但这取决于你。