【问题标题】:Angular $resource setup : Communicating between factory servicesAngular $resource 设置:工厂服务之间的通信
【发布时间】:2013-11-09 03:36:13
【问题描述】:

我正在尝试通过阅读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'} );
}]);

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

【问题讨论】:

  • 更改您的服务以查看它是否被调用。使用var r = $resource(...);console.dir(r); 然后return r;。它被调用了吗?值是什么样的?

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


【解决方案1】:

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

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/

【讨论】:

  • 谢谢。它正在工作,我如何在两个工厂服务之间进行通信?查看更新的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-31
  • 2018-10-13
  • 2020-02-05
  • 2021-06-20
  • 2019-12-26
  • 2016-07-04
  • 1970-01-01
相关资源
最近更新 更多