2017-02-13 89 views
0

我有2個控制器我想調用另一個控制器中的一個功能。我使用這個,我沒有使用任何$範圍。我怎樣才能從一個控制器調用一個功能到另一個。

var app = angular.module("myapp", []);

app.controller("myctl", function() { 
var parent= this; 
    parent.SayHello = function() { 
     // code 
    } 

}) 

app.controller("otherctl", function() { 
    var child = this; 
    // how to call sayHello without $scope 
}) 
+0

難道你還別說你爲什麼要做這種方式。你能否創建一個工廠並注入這兩個控制器? – Alok

+1

控制器是否嵌套? – Korte

+0

你可以使用事件,服務(如前所述)或@Korte用'$ parent'暗示,如果你有一個孩子的關係。這一切都取決於你沒有提供多少內容。 – ste2425

回答

1

cannot,即使您正在使用

你不能inject一個控制器到另一個控制器。

爲了在控制器之間共享數據,請考慮使用factory/service

DEMO

var app = angular.module("clientApp", []) 
 
app.controller("TestCtrl", 
 
    function($scope,names) { 
 
    $scope.names =[]; 
 
    $scope.save= function(){ 
 
     names.add($scope.name); 
 
    } 
 
    
 
    }); 
 
app.controller("TestCtrl2", 
 
    function($scope,names) { 
 
    $scope.getnames = function(){ 
 
    $scope.names = names.get(); 
 
    } 
 
}); 
 
    
 
app.factory('names', function(){ 
 
    var names = {}; 
 
    names.list = []; 
 
    names.add = function(message){ 
 
    names.list.push({message}); 
 
    }; 
 
    names.get = function(){ 
 
    return names.list; 
 
    }; 
 
    return names; 
 
});
<!doctype html> 
 
<html > 
 
<head> 
 
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script> 
 
    <script src="script.js"></script> 
 
</head> 
 
<body ng-app="clientApp"> 
 
    <div ng-controller="TestCtrl"> 
 
    <input type="text" ng-model="name"> 
 
    <button ng-click="save()" > save</button>  
 
    </div> 
 
    <div ng-init="getnames()" ng-controller="TestCtrl2"> 
 
    <div ng-repeat="name in names"> 
 
     {{name}} 
 
     </div> 
 
</div> 
 
</body> 
 
</html>

相關問題