2014-02-27 177 views
1

我正在学习来自Java背景的Angular JS。我写了第一个模块,我想扩展它 - 从我的(初学者)角度来看,它看起来像一个可以扩展的Class。所以我编码了以下两个模块:myAppmyApp2扩展angularJS模块

角JS代码:

var myApp = angular.module('myApp', []); 

myApp.controller('UserCtrl', ['$scope', function ($scope) { 

    $scope.name="cat"; 
    $scope.type="pet"; 

}]); 

var myApp2 = angular.module('myApp2', ['myApp']); 

myApp2.controller('UserCtrl', ['$scope', function ($scope) { 

    $scope.name="dog"; 

}]); 

HTML代码

<body ng-app="myApp2"> 

    <div ng-controller="UserCtrl"> 

     <p>{{ name }}</p> 
     <p>{{ type }}</p> 
    </div> 

在上述例子中,myApp2 “类型” 的计算结果为 “”。是否可以继承MyApp的属性和方法?

谢谢!

+0

可能重复:[?是否可将AngularJS控制器从同一模块中另一个位指示继承](http://stackoverflow.com/questions/18461263/can-一个-angularjs控制器-继承从 - 另一个-位指示-内式相同模块) – Beterraba

回答

1

扩展控制器比较容易。在下面的例子,CatCtrl继承AnimalCtrl范围:

<div ng-controller="AnimalCtrl"> 
    <p>{{ animal.name }}</p> 
    <p>{{ animal.type }}</p> 

    <div ng-controller="CatCtrl"> 
     <p>{{ animal.race }}</p> 
    </div> 
</div> 

myApp.controller('AnimalCtrl', ['$scope', function ($scope) { 

$scope.animal = { 
    gender: "M", 
    type: "" 
    ... 
}; 

}]); 

myApp.controller('CatCtrl', ['$scope', function ($scope) { 

angular.extend($scope.animal, { 
    type: "Cat", 
    race: "Albino" 
    ... 
}); 

}]);