2015-02-10 93 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