手機程式設計

ng指令與$scope變數

 

March 2016

2-way data binding

View

Template

 

{{name}}

{{email}}

Controller

 

$scope.name

$scope.email 

......                 

model

編譯

DOM

SCOPE

即時更新

即時更新

2-way

範例:登入頁面

  • state設定
  • 撰寫controller:使用$scope變數
  • 撰寫頁面:使用ng指令

state設定

angular.module('starter', ['ionic'])
        .config(function ($stateProvider, $urlRouterProvider) {
            $stateProvider
                    .state('login', {
                        url: '/login',
                        templateUrl: 'templates/login.html',
                        controller: 'LoginCtrl'
                    })
            $urlRouterProvider.otherwise('/login');
        })
        .controller()
        .run(function ($ionicPlatform) {
            $ionicPlatform.ready(function () {
            // .....
        })

撰寫controller:使用$scope

//...
.controller('ScopeCtrl', function ($scope) {
            $scope.formData = {
                name: '',
                passwd: ''
            };

            $scope.login = function () {
                console.log('name/pwd', $scope.formData.name);
            };

        })

$scope.formData

可定義任意名稱物件,供頁面使用。

$scope.login = function()

可定義任意名稱函式,供頁面呼叫。

console.log() 

輸出訊息至開發人員工具(F12)之控制台

撰寫頁面:使用ng指令

<ion-view title='登入測試'>
    <ion-content>
        <div class="item item-input" >
          <input type="text" ng-model='formData.name' placeholder="輸入帳號">
          <P>{{name}}</P>
        </div>
        <label class="item item-input">
          <input type='password' ng-model='formData.passwd' placeholder="輸入密碼">
        </label>
        <div class="item">        
        <button ng-click='login()'>登入</button>
        </div>
    </ion-content>
</ion-view>

ionic css設定

item: 清單項目

item-input: 輸入框

ng-model 

設定欄位的資料模型變數

ng-click 

設定按鈕點選後執行的函式

範例:陣列處理

  • JavaScript陣列, 物件
  • 清單列表:controller
  • 清單列表:頁面

JavaScript陣列與物件

// 數字陣列
var array= [1,2,3,4,5];   
// 字串陣列
var person = ['John', 'Mary', 'Joe', 'Lilly'];
// 資料型別可混合
var mix = ['banana', 'apple', 100, 20];

// 物件person, 各欄位person.firstName....
var person = {firstName:"Joe", lastName:"Johnson", age:46};

// 物件陣列
var persons = [
{firstName:"Joe", lastName:"Johnson", age:46},
{firstName:"John", lastName:"Stockton", age:36},
{firstName:"Jerry", lastName:"Stackhouse", age:26}
];

清單列表:Controller

.controller('NgRepeatCtrl', function ($scope) {
    var settings = [
        {label: '飛航模式', value: 'false', icon: 'ion-plane'},
        {label: 'Wi-Fi', value: 'false', icon: 'ion-wifi'},
        {label: '藍牙', value: 'false', icon: 'ion-bluetooth'},
        {label: '個人熱點', value: 'false', icon: 'ion-android-wifi'}
    ];
    $scope.settings = settings;
})

ionicons.com(Ionic內建圖示)

點選圖示可取得圖示代號(如ion-plane等)

清單列表:頁面

<ion-view title='設定'>
    <ion-content>
        <div class='list' ng-repeat="item in settings">
            <div class='item item-icon-left'>
                <i class='icon {{item.icon}}'></i>
                {{item.label}}
            </div>
        </div>
    </ion-content>
</ion-view>

ng-repeat

設定迴圈。需指定 "迴圈變數 in 陣列物件",例如:"item in settings"。item即為迴圈內可用變數,settings則是controller端設定的陣列物件。

repeat

ionic css設定

list: 清單

item: 清單項目

item-icon-left: 清單圖示顯示於左側

Ionic CSS練習

  • ionicons圖示
  • 輸入欄位
  • 清單、按鈕...

Ionic 表單輸入CSS

Ionic 清單CSS

Ionic 按鈕CSS

手機程式設計

By Leuo-Hong Wang

手機程式設計

  • 772