AngularJs和工厂中的依赖关系

时间:2013-06-19 18:27:57

标签: javascript angularjs dependency-injection object-literal

我刚刚开始使用AngularJS,我只是提出了几个问题,希望你能帮助我解决这些问题。

拥有(作为示例)以下js文件夹结构:

+---admin
|   |   ai-constants.js
|   |   commons.js
|   |   
|   +---modules
|   |       searcher.js
|   |

constants.js是我试图将其用作searcher.js中的依赖项的文件,这是其内容:

var aiConstants = angular.module("aiConstants", []);

aiConstants.factory("user", function () {
    return {
        ahaha: 0,
    }
});

aiConstants.factory("tagCategory", function () {
    return {
        none: 0,
        artisticMovement: 1,
        technicalMaterials: 2,
        art: 3,
        organizations: 4,
        professionals: 5,
    }
});

以下是searcher.js

的部分内容
var app = angular.module('searcher', ['tagCategory']);

app.controller('SearcherController', function($scope, $http) {

    $http.get('/api/search/tags/'+tagCategory.art).success(function(data) {
        $scope.tiposDeArte = data;
    });

为了测试它是否有效,我尝试加载js个文件:

<script type="text/javascript" src="js/admin/ai-constants.js"></script>
<script type="text/javascript" src="js/admin/modules/searcher.js"></script>

但是,不要去!所以我想知道:

  1. 我做得对吗?
  2. 有没有办法从路径中加载js文件作为依赖项(主要包含文字对象)?
  3. 更新

    我得到的错误是:

      

    未捕获错误:无模块:tagCategory

1 个答案:

答案 0 :(得分:1)

您的searcher模块需要为aiConstants 模块定义的依赖关系。然后,您可以从需要的模块注入服务。所以,它看起来像这样:

var app = angular.module('searcher', ['aiConstants']);

app.controller('SearcherController', function($scope, $http, tagCategory) {

    $http.get('/api/search/tags/'+tagCategory.art).success(function(data) {
        $scope.tiposDeArte = data;
    });