将相同的Web地址传递给Angular JS中的所有控制器的正确方法是什么?

时间:2014-01-29 16:11:08

标签: angularjs

我是AngularJS的新手,我有一堆执行CRUD操作的控制器。这些控制器都在向同一个基本URL发出请求,将这个URL传递给每个控制器的正确方法是什么,而不是在任何地方重写它或只是做一些全局?由于我是Angular的新手,我想知道在$ http中是否有一些内置工具已经做到这一点,我只需要设置该值。

3 个答案:

答案 0 :(得分:2)

第一个问题是您不必在控制器中执行CRUD操作。 CRUD是MVC模型部分的工作。

首先,您可以使用Constant:

angular.module('MyApp')
.constant('ENV_URL','https://test.com');

您可以在需要的地方注入并调用此常量。

接下来,您的CRUD必须放在这样的工厂中:

  angular.module('myApp').factory('usersFact',function ($resource,ENV_URL)
          {
    var User = $resource(ENV_URL, { userId: '@id' }, {
        get: {
            method: 'GET',
            isArray: false,
            headers: { 'Accept': 'what you need' }
        },post : {}, put :{}


        }
    });

    return {
        getSummary : function (id, cb) {
            var summary = User.getSummary({ userId: id },
                function () {
                    console.log(summary);
                    });

            return summary;
        }
    };
}

);

而且,在您的控制器中,您现在可以使用您的数据:

angular.module('MyApp').controller('ProfilCtrl',
function ($scope,usersFact,) {
    $scope.userInfo = usersFact.getSummary(userId, function () {
        console.log($scope.userInfo)
    });

} );

答案 1 :(得分:-1)

嗯,我想你应该创建一个服务并在那里进行繁重的工作并公开控制器可以调用的方法。

答案 2 :(得分:-1)

有两种方法可以做到这一点......

第一种方法是$ rootscope。 $ rootscope是所有控制器中所有$ scope的父级,因此任何$ scope都可以访问分配给$ rootscope的任何属性。

通过运行以下代码,您可以使用$ scope.url在任何控制器中访问“http://myurl.com

angular.module('myApp', [])
.run(function($rootScope) {
    $rootScope.url = "http://myurl.com";
});

另一种方法是使用这样的服务/工厂......

app.factory('globalurl', function() {
    return "http://myurl.com";
});

然后像这样写下你所有的控制器......

function Ctrl1($scope, globalurl) {
    $scope.url = globalurl(); 
}