2013-07-09 38 views
0

我想分割成2個文件的例子是我的controller如何在angularjs中爲一個控制器編寫2個文件?

Monitor.js

var feederliteModule = angular.module('FeederLiteApp', ['ui.bootstrap']); 

feederliteModule.controller('WiFiMonitor', function(
ajax_post, 
delay, 
switcher, 
maps, 
$scope, 
$http, 
$timeout, 
$q, 
$filter) 
{ 

$scope.method_1 = function(){ 
    /*....*/ 
} 

$scope.method_2 = function(){ 
    /*....*/ 
}  


}); 

feederliteModule.$inject = [ 
    'ajax_post', 
    'delay', 
    'switcher', 
    'maps', 
    '$scope', 
    '$http', 
    '$timeout', 
    '$q', 
    '$filter' 
]; 

我控制器的含量大,我有我不奶源來改變的部分代碼。

如何將部分控制器代碼提取到不同的文件?

在我來說,我希望把$scope.method_2方法在其他文件中,但仍然能夠調用

$scope.method_1$scope.method_2和全球所有的參數應該是在兩個文件中可見。

謝謝

+0

我相信你可以只定義函數在全局範圍內,然後以您的實際角度引用它們控制器,但我認爲這只是一個不好的做法。如果有某種方式可以做到相當於C#部分類,但我認爲不可能,那將會很不錯。 – shaunhusain

回答

1

Part1.js:

var buildPart1 = function(ajax_post, ..., $scope, ...) { 
    $scope.foo = ...; 
    $scope.bar = ...; 
}; 

Part2.js:

var buildPart2 = function(ajax_post, ..., $scope, ...) { 
    $scope.qix = ...; 
    $scope.baz = ...; 
}; 

Monitor.js:

feederliteModule.controller('WiFiMonitor', function(ajax_post, ..., $scope, ...) { 
    buildPart1(ajax_post, ..., $scope, ...); 
    buildPart2(ajax_post, ..., $scope, ...); 
}); 
+0

感謝您的迴應,如果在Monitor.js中'feederliteModule.controller'具有變量'$ scope.myvar = 0;'應該在'Part1.js'和'Part2.js'中可見嗎? –

+0

它是$ scope對象的一部分,並且這個$ scope對象被傳遞給了buildPart1()和buildPart2(),所以是的,它會被看到。 –

+0

明白了,謝謝 –

相關問題