如何从父范围调用在子范围中定义的方法?
function ParentCntl() { // I want to call the $scope.get here } function ChildCntl($scope) { $scope.get = function() { return "LOL"; } }
你可以使用
$broadcast
从父到子:
function ParentCntl($scope) { $scope.msg = ""; $scope.get = function(){ $scope.$broadcast ('someEvent'); return $scope.msg; } } function ChildCntl($scope) { $scope.$on('someEvent',function(e) { $scope.$parent.msg = $scope.get(); }); $scope.get = function(){ return "LOL"; } }
工作小提琴:http://jsfiddle.net/wUPdW/2/
更新:有另一个版本,较少耦合和更多的可测试:
function ParentCntl($scope) { $scope.msg = ""; $scope.get = function(){ $scope.$broadcast ('someEvent'); return $scope.msg; } $scope.$on('pingBack',function(e,data) { $scope.msg = data; }); } function ChildCntl($scope) { $scope.$on('someEvent',function(e) { $scope.$emit("pingBack",$scope.get()); }); $scope.get = function(){ return "LOL"; } }