Angular创建第三方模块",处理数据或获取数据?

时间:2015-04-30 15:55:31

标签: javascript angularjs

所以我有一个模块,主要用作第三方"模块。目的是创建一些可以轻松适应其他Angular应用程序的东西。所以我到目前为止就是这样的。

其他人的申请

var myApp = angular.module( 'myApp', ['thirdPartyModule'] );

我的第三方模块:

angular.module('thirdPartyModule', [])
.controller('thirdPartyController', function($scope, getDataForThirdPartyModule)
{
    getDataForThirdPartyModule.getData().then(function(data)
    {
        $scope.thirdPartyData = data;
        console.log($scope.thirdPartyData);
    });
})
.factory('getDataForThirdPartyModule', function($http)
{
    return {
        getData: function (callback) {
            return $http.get('/path/to/sample-data.json').then(function(response)
            {
                return response.data;
            });
        }
    }
});

目前,这适用于硬编码的URL路径:

$http.get('/path/to/sample-data.json')

但我想知道的是最好的方法是什么?我的想法是没有硬编码的URL路径,而是动态的并由主应用程序或模块决定。例如,我的第一个想法是这样的......

$http.get($scope.thirdpartyUrl);

但这不起作用,或者似乎是对的。那么做这样的事情的好方法是什么呢?

1 个答案:

答案 0 :(得分:1)

您可以使用provider

myApp.config(function(getDataForThirdPartyModuleProvider){
    getDataForThirdPartyModuleProvider.setUrl('/path/to/sample-data.json');
});

然后您可以在应用中配置您的提供商:

System.out.println("STARTING VI");
 ProcessBuilder processBuilder = new ProcessBuilder("/usr/bin/vi");
 processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
 processBuilder.redirectError(ProcessBuilder.Redirect.INHERIT);
 processBuilder.redirectInput(ProcessBuilder.Redirect.INHERIT);

 Process p = processBuilder.start();
  // wait for termination.
  p.waitFor();
System.out.println("Exiting VI");

检查this plnkr