LoginSignup
1
3

More than 5 years have passed since last update.

BlurAdmin スタートアップメモ2

Last updated at Posted at 2017-09-06

続き

無事にblurAdminがローカルで起動できたら、
ページの追加

以下にページの追加方法が書いてありますが、
https://akveo.github.io/blur-admin/articles/013-create-new-page/

英語が苦手の場合には読み飛ばすので、ひとまずメモします。

新ページの追加

以降の操作で’My New Page’ というページを作成します。

フォルダの作成

myNewPageをsrc/app/pages配下に作成します。
image

モジュールファイルの作成

myNewPage.module.jsファイルを新たに作成し、以下のコードを書く
image

(function () {
  'use strict';

  angular.module('BlurAdmin.pages.myNewPage', [])
      .config(routeConfig);

  /** @ngInject */
  function routeConfig() {

  }
})();

page.modules.jsファイルへモジュール参照を追加

  angular.module('BlurAdmin.pages', [
    'ui.router',

    'BlurAdmin.pages.dashboard',
    'BlurAdmin.pages.ui',
    'BlurAdmin.pages.components',
    'BlurAdmin.pages.form',
    'BlurAdmin.pages.tables',
    'BlurAdmin.pages.charts',
    'BlurAdmin.pages.maps',
    'BlurAdmin.pages.profile',

    'BlurAdmin.pages.myNewPage',
  ])

viewファイルの作成

my-new-page.htmlを作成する。
image

モジュールファイルにviewへの参照を追加する

(function () {
  'use strict';

  angular.module('BlurAdmin.pages.myNewPage', [])
      .config(routeConfig);

  /** @ngInject */
  function routeConfig($stateProvider) {
    $stateProvider
        .state('myNewPage', {
          url: '/myNewPage',
          templateUrl: 'app/pages/myNewPage/my-new-page.html',
          title: 'My New Page',
          sidebarMeta: {
            order: 10,
          },
        });
  }
})();

sidebarMetaが無いとサイドメニューに表示されないので注意

サイドメニューのオプションは以下
https://akveo.github.io/blur-admin/articles/051-sidebar/

確認

タスクランナーからビルドを実行し、出来上がったファイルをブラウザにて確認する。
メニューにができてたら成功

image

あとはよきにはからえで機能を追加していく。

検索機能の実装

image

検索BOXは以下のpageTopにある。

src\app\theme\components\pageTop

view(pageTop.html)にはサーチボタンとstartSearch()が設定されているが、
startSearch()メソッドはどこにも実装されていない。
image

よってコントローラーを作成して、startSearchメソッドを追加する。

    angular.module('BlurAdmin.theme.components')
        .controller('PageTopCtrl', PageTopCtrl);
    /** @ngInject */
    function PageTopCtrl($scope, $rootScope) {
        $scope.startSearch = function () {
        }
    }

startSearchメソッドとview側のstartSearchがバインドされたので、検索処理が可能となった。
このままではPageTopCtrlのみでしか処理できないので、startSearchをブロードキャストしてみる。
以下のようなコードになる。


(function () {
    'use strict';

    angular.module('BlurAdmin.theme.components')
        .directive('pageTop', pageTop);

    /** @ngInject */
    function pageTop() {
        return {
            restrict: 'E',
            templateUrl: 'app/theme/components/pageTop/pageTop.html',
            controller: 'PageTopCtrl',
        };
    }

    angular.module('BlurAdmin.theme.components')
        .controller('PageTopCtrl', PageTopCtrl);
    /** @ngInject */
    function PageTopCtrl($scope, $rootScope) {
        $scope.startSearch = function () {
            $rootScope.$broadcast('startSearch', $scope.searchString);
        }
    }

そもそもトップバーの検索BOXの処理をどこで処理するか、(どの機能が検索を受け持つのか)
むしろ何を検索したい(させたい)と思って検索BOXを設置するのか?によっても処理が変わるであろうが、
ひとまず、ここでは先ほど追加したMy New Pageに対して検索(絞込)を行う事を想定した。

myNewPageモジュールにコントローラーmyNewPageCtrlを作成して、$onを追加しブロードキャストされたイベントを受け取ります。

angular.module('BlurAdmin.pages.myNewPage')
    .controller('myNewPageCtrl', myNewPageCtrl);

/** @ngInject */
    function myNewPageCtrl($scope) {
        //startSearchイベントを受け取る
        $scope.$on('startSearch', function (event, searchString) {
            $scope.searchString = searchString;
        });
    }

これで、My New Pageが表示されている時に検索BOXで検索を行うと、
myNewPageCtrl内でイベントをキャッチして処理が実行可能となりました。

1
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3