Restangular忽略setBaseUrl

时间:2015-12-28 20:14:17

标签: angularjs restangular

应用程序在http://domain1上运行,必须使用以下代码从http://domain2请求数据:

'use strict';

// Declare app level module which depends on views, and components
var myApp = angular.module('myApp', [
  'ngRoute',
  'restangular'
]);

myApp.config(['$routeProvider', 'RestangularProvider', function($routeProvider, RestangularProvider) {
  $routeProvider.when('/view1', {
      templateUrl: '/view1.html',
      controller: 'View1Ctrl'
    });

  $routeProvider.otherwise({redirectTo: '/view1'});
  RestangularProvider.setBaseUrl("http://domain2/");
}]); 

var rest = null;
myApp.controller('View1Ctrl', ['$scope', 'Restangular', function($scope, Restangular) {
  rest = Restangular;
  var cursos = Restangular.one("resource",100).get()
}]);

但是,请求转到http://domain1。到底是怎么回事?我还检查了Restangular配置,将Restangular放在全局范围内,作为rest变量,基本url似乎是属性集。

1 个答案:

答案 0 :(得分:0)

嘿,你可以创建一个factory并使用不同的域来获取类似下面的数据

(function () {
   'use strict';
angular.module('app')
    .factory('Domain2Restangular', ['Restangular',   Domain2RestangularFunction]);

function Domain2RestangularFunction(  Restangular) {
    return Restangular.withConfig(function(RestangularConfigurer) {
        var baseURL = 'http://domain2';
        RestangularConfigurer.setBaseUrl(baseURL);
        RestangularConfigurer.setDefaultHeaders({'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8' });
    });
}

}());

您可以调用

 return Domain2Restangular.all('')
            .post(data)
            .then(function(response) {
                return response;
            }, function(error) {
                return error
     });