我正在尝试在我的所有模块中提供 SORT 功能,我想知道集成它。Angular 是否支持某种 mixin?
我希望 mixin 向与模块关联的控制器注入新的属性(模型)和方法。这些属性和方法应该只使用它们关联的控制器的作用域。
我知道我可以使用下划线 _.extend 或 jQuery.extend() ,但我想知道是否有一种更简洁的方法可以以真正的 Angular 精神做到这一点。
问候。
是的!这很简单。
我可以给你一个例子来实现这一点:
(...)
.controller('ParentCTRL', ['$scope', function($scope) {
$scope.base_func= function() {
//Do something
};
}]);
.controller('ChildrenCTRL', ['$controller', '$scope', function($controller, $scope) {
$controller('ParentCTRL', {$scope: $scope});
// Now you can access base_fun() from here
}]);
.controller('SecondChildrenCTRL', ['$controller', '$scope', function($controller, $scope) {
$controller('ParentCTRL', {$scope: $scope});
// Now you can access base_fun() from here
}]);
一年之后:
您可以使用范围继承!您可以拥有一个具有您想要共享的所有功能的主控制器,然后您可以通过以下方式指定子控制器:
HTML:
<body ng-controller="MainCtrl">
<div id="wrapper" ng-controller="SectionCtrl">
...
</div>
</body>
主控件:
function MainCtrl($scope) {
$scope.sorter = { array: [], sort: function() { } };
}
部分控制:
function SectionCtrl($scope) {
$scope.sorter.array = [1,2,3];
$scope.sorter.sort();
}
无需声明 $scope.sorter,因为 MainCtrl 已经声明了它。Angular 中的作用域继承与 Javascript 中的作用域继承非常相似。
我不确定您到底要做什么,但听起来您想要一个Service,然后将其依赖注入到您的控制器和指令中。