Model 可以在 Controller 中進行處理
並且透過 雙向資料繫結 (Two Way Data-Binding),可以即時的互動!
Angular Setting
1234567891011
//app/asset/javascript/app.js//angular.module//Where we write pieces of our Angular application.//Makes our code more maintainable, testable, and readable. //Where we define dependencies for our app.varapp=angular.module('app',//設定 module 名稱,只能有一個['ui.router',//Dependency Injection 其他 module'angularFileUpload'])
app.config(['$httpProvider',function($httpProvider){//防止 CSRF,rails 預設都必須帶 token,才可以發 post,防止外來的攻擊varheaders=$httpProvider.defaults.headers.common;token_tag=document.querySelector("meta[name=csrf-token]");if(token_tag){headers['X-CSRF-TOKEN']=token_tag.content;};headers['X-Requested-With']='XMLHttpRequest';//另一種方式//$httpProvider.defaults.headers.common['X-CSRF-TOKEN'] = $('meta[name=csrf-token]').attr('content');}]).config(['$stateProvider','$urlRouterProvider',function($stateProvider,$urlRouterProvider){// For any unmatched url, redirect to /state1$urlRouterProvider.otherwise("/home");// Now set up the states$stateProvider.state('posts',{abstract:true,url:"/posts",template:"<ui-view></ui-view>",}).state('posts.list',{url:"/list",//http://localhost:3000/#/posts/listtemplateUrl:"/posts/index.html",controller:'PostIndexCrtl'}).state('posts.show',{url:"/show/:id",//http://localhost:3000/#/posts/show/1templateUrl:"/posts/show.html",controller:'PostShowCrtl'})}])
<!--public/posts/index.html--><divclass="box"><divclass="box-header"><divclass='pull-right'><!-- ng-model 綁定 data 用來篩選--><label>Any: <inputng-model="search.$"></label><label>ID: <inputng-model="search.id"></label></div></div><divclass="box-body"><tableclass="table table-bordered table-hover"><thead><tr><!-- ng-clik 觸發 controller 裡的 sort() function 並帶參數進去 --><thng-click="sort('id')"class='pointer'>ID
<!-- ng-show true 顯示 flase 隱藏,相反為 ng-hide --><spanclass="glyphicon"ng-show="sortKey=='id'"ng-class="{'glyphicon-chevron-up':reverse,'glyphicon-chevron-down':!reverse}"></span></th><th>名稱</th><th>描述</th></tr></thead><tbody><!-- ng-repeat 展開取回來的 array data --><!-- filter 篩選 --><!-- orderBy 排序 --><trng-repeat="video in videos | filter:search:strict | orderBy:sortKey:reverse"><td></td><td></td><td></td></tr></tbody></table></div></div><!--checkbox 多選項--><labelng-repeat="fruit in fruits"><inputtype="checkbox"name="selectedFruits[]"value=""ng-checked="selection.indexOf(fruit) > -1"ng-click="toggleSelection(fruit)"></label><pre></pre>
指令
ng-app 用來宣告 angular 的範圍,也可放在 body 裡面。
ng-init 可以直接在 view 中設定初始值,不過偏好管理還是直接設在 js 比較方便
ng-model 設定綁定的變數
ng-click 點下去觸發,設定好的function()
ng-show ng-hide 搭配 ng-model 綁定資料,就可以來根據各種情況來顯示會隱藏
ng-repeat
123456
<png-repeat="post in posts">.</p>$index–取出陣列中的index。(從0開始)$first–如果是第一個項目,就傳回true、否則為false。$middle–如果不是第一個和最後一個項目,就傳回true、否則為false。$last–如果是最後一個項目,就傳回true、否則為false。