0

我正在尝试在我的所有模块中提供 SORT 功能,我想知道集成它。Angular 是否支持某种 mixin?

我希望 mixin 向与模块关联的控制器注入新的属性(模型)和方法。这些属性和方法应该只使用它们关联的控制器的作用域。

我知道我可以使用下划线 _.extend 或 jQuery.extend() ,但我想知道是否有一种更简洁的方法可以以真正的 Angular 精神做到这一点。

问候。

4

3 回答 3

1

是的!这很简单。

我可以给你一个例子来实现这一点:

(...)

.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

}]);
于 2014-10-13T17:20:13.787 回答
1

一年之后:

您可以使用范围继承!您可以拥有一个具有您想要共享的所有功能的主控制器,然后您可以通过以下方式指定子控制器:

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 中的作用域继承非常相似。

于 2013-11-06T21:58:22.507 回答
0

我不确定您到底要做什么,但听起来您想要一个Service,然后将其依赖注入到您的控制器和指令中。

于 2012-11-08T22:34:36.250 回答