0

すべてのモジュールで SORT 機能を提供しようとしていますが、これを統合する方法を知りたいです。Angular はある種の mixin をサポートしていますか?

モジュールに関連付けられたコントローラーに新しいプロパティ (モデル) とメソッドを挿入する mixin が必要です。これらのプロパティとメソッドは、関連付けられたコントローラーのスコープのみを使用する必要があります。

underscore _.extend または jQuery.extend() を使用できることは知っていますが、真の Angular 精神でこれを行うためのよりクリーンな方法があるかどうかを知りたいです。

よろしく。

4

3 に答える 3

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();
}

MainCtrl で既に宣言されているため、 $scope.sorter を宣言する必要はありません。angular でのスコープの継承は、Javascript でのスコープの継承とほとんど同じように機能します。

于 2013-11-06T21:58:22.507 に答える
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 に答える
0

あなたが何をしようとしているのか正確にはわかりませんが、コントローラーとディレクティブに依存関係が注入されるServiceが必要なようです。

于 2012-11-08T22:34:36.250 に答える