angglarjs controller継承
3800 ワード
最前線
最近angglarjsプロジェクトの中で、
\(controller serviceは継続して資料を調べることを実現しました.anggur jsはすでに私達にcontrollerの継承を提供してくれました.私達は`.controler service app
1.
2.Serviceを作成します.このサービスはデータサービスを提供します.
4.
このようにして後で私達は一つの共通の
転載先:https://www.cnblogs.com/qiaojie/p/5721098.html
最近angglarjsプロジェクトの中で、
controller
を見ると、多くは重複コードで、controllerの中に多くのコードが似ているfunction(例えば、controllerの下のCRUD方法)があり、重複性の仕事が多すぎる.後から考えて、serviceを提出してもいいですか?しかし、よく考えてみると、これらのCRUDはもともとServiceから呼び出されたものです.Serviceを提出すると、Serviceが混乱して、職責がはっきりしません.自分でいくつか後端をしたことがあるため、後端の思想に助けを借りて、controllerが受け継ぐことができるのではありませんか?\(controller serviceは継続して資料を調べることを実現しました.anggur jsはすでに私達にcontrollerの継承を提供してくれました.私達は`.controler service app
//
// constructor function string
// function, controller
// string, $controllerProvider controller
//locals , controller , child controller
$controller(constructor, locals, [bindings])
コードケース1.
base.controller.js
ファイルを作成する(function() {
'use strict';
angular
.module('DemoApp')
.controller('BaseCtrl', BaseCtrl);
//
BaseCtrl.$inject = ['$scope','CRUDServices'];
/* @ngInject */
function BaseCtrl($scope,CRUDServices) {
var _this = this;
// controller
_this.bFormValid = formValid;
activate();
//
function activate() {
getList();
}
//
function getList() {
// bList
_this.bList = CRUDServices.getList();
}
//
function formValid(){
//do some thing
return false;
}
}
})();
コードは簡単で、BaseController
に簡単なformValid()
方法を提供し、getList()
方法を初期化して起動しました.2.Serviceを作成します.このサービスはデータサービスを提供します.
(function() {
'use strict';
angular
.module('DemoApp')
.service('ExtendServices', ExtendServices);
ExtendServices.$inject = [];
/* @ngInject */
function ExtendServices() {
return {
getList: getList // list
}
function getList() {
return [{ id: 1, name: ' ' }, { id: 2, name: ' ' }]
}
}
})();
3.child.controller.js
、つまり私達の最も主要なファイルを作成します.(function() {
'use strict';
angular
.module('DemoApp')
.controller('ChildCtrl', ChildCtrl);
//
//ExtendServices Servie
ChildCtrl.$inject = ['$scope', '$controller','ExtendServices'];
/* @ngInject */
function ChildCtrl($scope, $controller,ExtendServices) {
var vm = this;
// controller
var parentCtrl = $controller('BaseCtrl', { $scope, $scope,CRUDServices:ExtendServices })
// angular.extend
angular.extend(vm, parentCtrl);
activate();
function activate() {
//
vm.bFormValid();
}
}
})();
このように、私たちは$controller service
を通じてcontrollerの継承を実現し、child controller
に必要な注入サービスをbase controller
に導入することもできる.({ $scope, $scope,CRUDServices:ExtendServices }
)私たちchild controlller
行のコードは全部書かれていません.取得リストのmagicパワーを使いました.フォーム検証を呼び出す必要があるなら、直接vm.bFormValid()
を呼び出してもいいです.4.
child.html
を作成し、直接連結すればOKです.
{
{item}}
結尾語このようにして後で私達は一つの共通の
controller
を提案して、いくつかのよく使う方法をカプセル化して、controller
の中で、業務に関して異なっている方法だけを書く必要があります.コードの維持性が大幅に向上し、コード量も減少します.転載先:https://www.cnblogs.com/qiaojie/p/5721098.html