1

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);
        }
    }
});

在控制器中我有

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

这行得通,但感觉不是实现此目的的正确方法。有哪些其他技术可以用于此?

4

1 回答 1

1

你正在做的更多的是jquery方式而不是角度方式。正如钱德马尼在评论中所说。跳过该指令,当您发布新的 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>
于 2013-09-13T10:34:00.260 回答