Angular $资源设置:在工厂服务之间进行通信

时间:2013-10-29 19:26:27

标签: angularjs laravel-4 angularjs-directive angular-resource angular-services

我正在尝试通过阅读this article为我的Laravel 4 + angular.js 1.0.7应用程序实现分页。

我的代码看起来,

var app = angular.module('cmsPlus', ['ngResource']);

app.service( 'Post', [ '$resource', function( $resource ) {
   return $resource( 'posts/:id', { id: '@id'} );
}]);

function PostCtrl($scope, $http, Post) {
   $scope.init = function () {
     console.log(Post); // returns empty object
     $scope.posts = Post.query(); // Post.query is not a function
     // $scope.posts = Post.get(); // Post.get is not a function
   }
}

为什么我要使用console.log(Post);获取空对象?为什么它显示Post.query is not a function错误?我该如何解决?

编辑:在两个工厂服务之间进行通信

现在我有两个工厂服务,

app.factory('Data', function(){
        return {
            root_path: "<?php echo Request::root(); ?>/"
        };
});

app.factory( 'Post', [ '$resource', function( $resource ) {
   return $resource( 'posts/:id', { id: '@id'} );
}]);

如何在Data.root_path工厂服务中访问Post

1 个答案:

答案 0 :(得分:4)

我认为您想使用工厂而不是服务,即:

app.factory( 'Post', [ '$resource', 'Data', function( $resource, Data ) {
   return $resource( Data.root_path + 'posts/:id', { id: '@id'} );
}]);

此链接显示了不同之处:

http://blog.manishchhabra.com/2013/09/angularjs-service-vs-factory-with-example/