LoginSignup
27
26

More than 5 years have passed since last update.

AngularJSアプリケーションにチュートリアルを簡単に導入する

Last updated at Posted at 2014-07-01

Intro.jsをAngularJSのDirectiveにしたAngular Intro.jsを利用して、簡単にチュートリアルを実現する方法を試してみました。

導入手順

  • 開発環境 は Mac OS X (Mavericks)とします。
  • 今回は Yeoman の generator-angular で作成した雛型アプリケーションが既にある前提で、Bowerで angular-intro.js を追加する手順を説明します。
    • 雛型アプリケーションを用意する方法については、前に投稿したこのあたりを参考にしてください。

Bower で angular-intro.js をインストール

  • 一応、bower search で確認

    $ bower search intro
    

  • この中の angular-intoro.js をインストール

    $ bower install angular-intro.js --save
    
  • すると intor.jsangular-intro.js がインストールされます。

index.htmlから読み込む

  • CSSファイルの読み込み

    index.html
    <link rel="stylesheet" href="bower_components/intro.js/introjs.css" />
    
  • JavaScriptファイルの読み込み

    index.html
    <script src="bower_components/intro.js/intro.js"></script>
    <script src="bower_components/angular-intro.js/src/angular-intro.js"></script>
    

※もしくはGruntで $grunt bower-install とすると自動で index.html に記載が追加されます。

AngularJSに組み込む

  • app.js を編集します。

チュートリアルの設定をする(Controller側)

  • 公式のサンプルを元に、チュートリアルを仕込みたいページのコントローラに設定を書きます。
  • 今回は AngularJS雛型環境のTOPページである scripts/controllers/main.js に書いてみます(ほぼ公式のコピペ)。

チュートリアルの設定をする(View側)

  • TOPページである views/main.html に書きます。

    <div ng-controller="MainCtrl"
         ng-intro-options="IntroOptions" ng-intro-method="CallMe"
         ng-intro-autostart="true"></div>
    
  • この例だと、ページ表示時に自動でチュートリアルを表示(ng-intro-autostart="true")するようにしています。任意のタイミングへ変更したい場合はここを false にして、実行したいタイミングで View か Controller から CallMe() メソッドをコールすればOKです。

    • Viwe からコールする例:<span ng-click="CallMe();">○○</span>
    • Controller からコールする例:$scope.CallMe();
    • 実際の案件では、二回目を表示しないように、見たフラグをサーバかWEBストレージ、もしくは cookie に保存する感じかと。
  • チュートリアル時にフォーカスしたいHTML要素に、id="step1" 〜 を指定していきます。例えば、

    <div id="step1" class="header">
      <ul class="nav nav-pills pull-right">
        <li class="active"><a ng-href="#">Home</a></li>
        <li><a ng-href="#"><span id="step5">About</span></a></li>
        <li><a ng-href="#">Contact</a></li>
      </ul>
      <h3 class="text-muted">angular intro test</h3>
    </div>
    
    <div class="jumbotron">
      <h1>'Allo, 'Allo!</h1>
      <p id="step2" class="lead">
        <img src="images/yeoman.png" alt="I'm Yeoman"><br>
        Always a pleasure scaffolding your apps.
      </p>
      <p id="step3"><a class="btn btn-lg btn-success" ng-href="#">Splendid!</a></p>
    </div>
    
  • 以上で完了です。$grunt serve して動作を確認してみます。

注意

  • CSSフレームワークを利用している、またははCSSの組み方によっては、フォーカスがずれてしまうようです。

ほか

27
26
0

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
27
26