2014-02-27 222 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" 
    ... 
}); 

}]);