javascript - 在 AngularJS 中成功的 http 请求上创建 DOM 元素

标签 javascript angularjs angularjs-directive

我已经在作用域中使用函数 createDOMWallPost 定义了一个指令。如果 http 请求顺利(服务器响应“OK”),该函数会将 newWallPost 附加到具有 dynamic-wall 属性的元素

angular.module('p2l.directives', []).directive('dynamicWall', function(){
    return function(scope, element, attrs){
        scope.createDOMWallPost = function(newWallPost){
            $(element).append(newWallPost);
        }
    }
});

在 Controller 中我有

var newWallPost = $scope.newWallPost;
$http.post("/backend/newWallPost",
    {
        newWallPost : newWallPost
    }).success(function(data){
        if(data == "OK"){
            $scope.createDOMWallPost(newWallPost);
        }
    });

这可行,但感觉不是完成此任务的正确方法。还有哪些其他技术可以用于此目的?

最佳答案

你所做的更多是jquery方式,而不是 Angular 方式。 正如钱德马尼在评论中所说。跳过该指令,当您发布新的 wallPost 返回 json 数据(包括来自 API 的所有帖子)时,将返回的数据保存到 $scope 变量中,并使用 ng-repeat 使用新帖子更新 DOM。

此外,在创建不会在模板中执行的函数时,您不需要使用 $scope.varName = function(){} 。

一些快速伪代码

#Controller
var newWallPost = $scope.newWallPost;
$http.post("/backend/newWallPost",
    {
        newWallPost : newWallPost
    }).success(function(data){
        if(data == "OK"){
            $scope.wallPosts = data;
        }
    });

#Template
<p ng-repeat="post in wallPosts">{{ post.jsonKey }}</p>

关于javascript - 在 AngularJS 中成功的 http 请求上创建 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18783850/

相关文章:

javascript - 我们应该在哪里存储 session ID

javascript - 使用 if(cond) else if(same Cond) 检查相同条件两次是什么意思?

javascript - Controller 函数未被调用

javascript - AngularJS:从布局更新 View 内容

javascript - Angularjs selectize 指令,$digest 问题

javascript - 如何在 AngularJS 中动态嵌套指令

javascript替换关闭表格标签

javascript - document.all 和 document.layers 现在过时了吗

javascript - 如何在 ng-change 中保留原始值

javascript - 在 Angular JS 指令中使用 jquery 的正确方法是什么?