主模块内的var app无法被同一模块内的其他组件识别

时间:2015-07-31 15:58:50

标签: angularjs typescript lazy-loading

我有一个主模块正在创建名为'FormTest'的angular.module。在FormTest模块内部,我有一个名为'ji-Text'的指令。我有延迟加载将指令和视图加载到.js文件(不那么重要)。问题是在我的指令中,“app”无法识别。但我不确定为什么,因为它在同一个模块“FormTest”中。我得到的错误是TS2304“无法找到名称'app'。

指令

module FormTest {
    app.directive('jiText', function () {
        return {
            restrict: 'E',
            transclude: true,
            scope: { name: '@' },
            templateUrl: 'FormText/views/ji-Text.html'
        }
    });
}

主要模块

module FormTest {
    "use strict";

        //Create the formTest module

        var app = angular.module('FormTest', ['dx'])
        app.config(confirm);
    }

延迟加载

                .state('FormTest', <ng.ui.IState> {
                    url: '/formTest',
                    templateUrl: 'FormTest/FormTest.html',
                    loadCtl: ['$ocLazyLoad', function ($ocLazyLoad) {
                        return $ocLazyLoad.load('js/FormTest.js');
                    }]
                })

1 个答案:

答案 0 :(得分:0)

您无法以这种方式访问​​模块!您必须使用angular.module在上下文中获取它。并且,strict mode将阻止您使用任何未使用的未声明变量。只需改为:

module FormTest {
    angular
     .module('FormTest') //Gets the FormTest Module
     .directive('jiText', function () {
        return {
            restrict: 'E',
            transclude: true,
            scope: { name: '@' },
            templateUrl: 'FormText/views/ji-Text.html'
        }
    });
}