モダンなAngularJSの書き方(コントローラ)
備忘録を兼ねて、現在調べている範囲で書きます。
- 基本的にstrictモードで書く
- $scopeは使わない
- コンポーネント化を意識する
の3点に気をつけて書くとこうなります。
(function(){
'use strict';
// モジュール定義
angular
.module('app', ['ngMaterial'])
.controller('MainController', controller);
// コントローラ
function controller($mdSidenav) {
var self = this;
// ナビゲーションドロワー切り替え
function toggleSideNav() {
$mdSidenav('left').toggle();
}
}
})();
function(){}で囲む必要は特にないです。thisをコントローラ内の変数に代入している理由は後ほど明らかになります。
$scopeやら無名関数やらが消えてソースが見やすくなりましたね。
HTML内で使う場合はController asで
<body ng-app="app" ng-controller="MainController as main" layout="row" ng-cloak >
<md-sidenav class="site-sidenav md-sidenav-left md-whiteframe-z2" md-component-id="left" ng-click="main.toggleSideNav()" md-is-locked-open="$mdMedia('gt-sm')">
<md-toolbar class="md-whiteframe-z1">
こんな感じに別名を付け、メンバへのアクセスは「別名.メンバ名」のようにします。
ES6でない時点で「モダン」ではありませんが、まだ勉強中の身ですのでご了承ください。
Written on February 8, 2016