2015-02-10 158 views
0

首先,我正在发现AngularJS。我读过很多关于这方面的课程,但我很不熟悉它。AngularJS,加载模块

我有一个项目,我不能修改以前的声明。 我想将wysiwyg添加到项目中。

我必须使用existant模块创建其他控制器。 我知道如果我重新定义模块,之前将会丢失。

我认为这将是一件好事:

angular.module('demo') 
    .controller('WysiwygCtrl', ['colorpicker.module', 'wysiwyg.module', function($scope) { 
    $scope.data = { 
     text: "hello" 
    } 
}]); 

但它不工作。

其实,最简单的方法是:

angular.module('demo', ['colorpicker.module', 'wysiwyg.module']) 
    .controller('WysiwygCtrl', function($scope) { 
    $scope.data = { 
     text: "hello" 
    } 
}); 

但它会创建一个新的模块,我失去前一个...

我该怎么办,使其作品?如果你需要更多的代码,我可以编辑我的问题,但我认为模块/控制器是最重要的部分。

感谢您的帮助,我今天早上面临这个问题。

EDIT1:所见即所得库托管在GitHub这里https://github.com/TerryMooreII/angular-wysiwyg

EDIT2:现在,不显示任何内容,因为我有以下错误: Error: [$injector:unpr] http://errors.angularjs.org/1.2.16/$injector/unpr?p0=colorpicker.moduleProvider%20%3C-%20colorpicker.module

+0

所以你是说你要到WysiwygCtrl控制器代码中访问wysiwyg.module? – mindparse 2015-02-10 12:29:24

+0

@mindparse我不知道... 此代码的工作原理: 'var app = angular.module('app',['colorpicker.module','wysiwyg.module']) app.controller(' MyCtrl',函数($ scope){0}范围。data = { text:“hello” } })'现在我想知道为什么我的工作不正常 – Maxime 2015-02-10 12:31:08

+0

那么究竟是不是工作?你看到'你好'出现在wysiwyg编辑器中吗? – mindparse 2015-02-10 12:35:40

回答

1

angular.module('moduleName', ['dep1', 'dep2']) - 创建一个模块,具有依赖项所列在第二个参数中,这个签名还会返回新创建的模块,您必须指定依赖项列表,即使它只是一个空数组[]。这也会以相同的名称覆盖任何现有的模块。

angular.module('moduleName') - 返回之前在代码中创建的模块,因此签名中不存在依赖项列表 - 这也会返回一个模块。

两个签名允许您添加控制器,服务等。

+0

好吧,但知道我不能修改模块之前,有没有办法添加依赖项?'['colorpicker.module','wysiwyg.module']'? – Maxime 2015-02-10 12:42:11

+0

@Maxime - no,你必须预先指定所有的依赖关系 – 2015-02-10 12:42:53

+0

该死的......最好的方法是声明模块,将它保存在一个var中,然后在......之后使用这个var,但是在这里呢?这是一团糟,我迷路了 – Maxime 2015-02-10 12:48:23

1

另外,我认为你必须传递引用它们的模块在功能

.controller('WysiwygCtrl', ['$scope', 'colorpicker.module', 'wysiwyg.module', function($scope, colorpickermodule, wysiwygmodule) { 
    $scope.data = { 
     text: "hello" 
    } 
} 
+0

我试过了,仍然收到错误 – Maxime 2015-02-10 12:48:51

+0

错误:[$ injector:unpr] http://errors.angularjs.org/1.2.16/$injector/unpr?p0=colorpicker.moduleProvider%20%3C-%20colorpicker.module ' – Maxime 2015-02-10 12:50:07

0

如果使用阵列符号当创建组件作为控制器或指令时,主函数或模块上的参数应该匹配。我看到您使用

.controller('WysiwygCtrl', ['colorpicker.module', 'wysiwyg.module', function($scope) { 
$scope.data = { 
    text: "hello" 
} 

你也许要说

.controller('WysiwygCtrl', ['$scope', 'colorpicker.module', 'wysiwyg.module', function($scope) { 
$scope.data = { 
    text: "hello" 
} 
+0

我试图添加'$ scope',但是我仍然有一个错误:'错误:[$ injector:unpr] http://errors.angularjs.org/1.2.16/$injector/unpr?p0=colorpicker。 moduleProvider%20%3C-%20colorpicker.module' – Maxime 2015-02-10 12:46:45

+0

它看起来像它无法找到colorpicker.module服务。您必须确保在尝试将其注入另一个组件之前声明它作为依赖项 – Raulucco 2015-02-10 13:26:27