2014-10-27 79 views
0

我有2個控制器1)控制器1 2)控制器2如何將一個範圍中定義的函數添加到另一個範圍內,而不重複?

HTML代碼是一樣的東西

<div> 
<div> 
All time Visible 
<input ng-change=callAMethodInController1()> 
</div> 
<div ng-show=toShowTab1Div id="tab_2_div">tab1</div> 
<div id="tab_2_div" ng-show=toShowTab2Div class="PR1 PL1 PT2"> 
    <div ng-include="'../style/taxation.html'"></div> 
</div> 
</div> 

這整個HTML文件taxPare.html。

RouteProvider就像

$routeProvider 
    .when('/', { 
     templateUrl: '../jspfolder/payroll/taxPare.html', 
     controller: 'controller1 ' 
    }) 
    .when('/taxCalc', { 
     templateUrl: '../jspfolder/payroll/taxPare.html', 
     controller: 'controller2' 
    }) 

直到這個我完全可以兩個控制器間的交融代碼。但是有一些問題。

1)我有一部分代碼是包容性的兩個控制器。 2)一些方法專門寫在controller1中。

但是,當我在控制器2,我在做公共部分的一些變化,如明顯的什麼都不會發生,因爲$ scope.methodOfController1不可訪問,這

解決方案?

除此之外,還可以將一個js文件添加到另一個js文件中。它就像在另一個js中拷貝一個js文件一樣,但不會複製代碼?

+1

裝入一個服務/工廠兩個控制器之間共享的代碼。 – 2014-10-27 10:40:22

+0

你可以創建一個服務,這樣兩個控制器都可以使用該服務的功能 – 2014-10-27 10:40:46

回答

1

你可以把通用代碼成Service並注入到這每個控制器

module.service('userService', function(){ 
    this.users = ['John', 'James', 'Jake']; 
}); 

或工廠方法

module.factory('userService', function(){ 
    var users = {['John', 'James', 'Jake']}; 
    return users; 
}); 
+0

請注意,默認解決策略是單例 – 2014-10-27 10:45:18

相關問題