1. 程式人生 > >angular路由與ng-options/ng-include指令

angular路由與ng-options/ng-include指令

ng-options下拉列表指令 ng-options="fruit.name for fruit in main.fruitArr" fruit 是通過遍歷 main.fruitArr 取出的每一個物件 fruit.name 是取出 fruit物件中的 name屬性值 注意: ng-options指令需要與ng-model同時使用 預設選中 設定的選中項 ng-model="main.selected" ng-options="fruit.name as fruit.name for fruit in main.fruitArr" 第一個fruit.name是select 選中的內容,和前面的ng-model繫結的值一樣 ng-include包含指令
ng-include三種引入模版: 以屬性形式 <div ng-include=""></div> 以元素形式 <ng-include src=""></ng-include> 以類名形式 <div class="ng-include: main.template.url"></div> 路由 第一步引入angular-route.js angular.module('myApp',['ngRoute']) 在.config()中配置路由 /** *第一個引數: 路徑(位址列中#號後面的內容),第二個引數: 路徑對應的模版和控制器 */ $routeProvider.when('/home',{ //模版路徑 templateUrl: 'home.html', //模版對應的控制器, 相當於以前寫的 ng-controller, 模版中可以使用控制器作用域中的方法和屬性 controller: 'homeController' }); //其他情況下的模版和控制器(引數可以是字串或對像) $routeProvider.otherwise('/home'); $routeProvider.後面接when與otherwise,可以鏈式操作 如: $routeProvider .when('/user',{ templateUrl: 'user.html', controller: 'userController' }) .when('/other',{ templateUrl: 'user.html', controller: 'userController' }) .otherwise('/home'); 路由與ng-view指令結合使用
ng-view用來承載模版,三種使用方式 以元素形式 <ng-view></ng-view> 以類名形式 <div class="ng-view"></div> 以屬性形式 <div ng-view></div> 如: <body ng-app="myApp"> <!-- ng-view用來承載模版,有三種形式 --> <!--<ng-view></ng-view>--> <!-- 類名形式 --> <!--<div class="ng-view"></div>--> <!-- 屬性形式 --> <div ng-view></div> </body> 在控制器中可以通過$location.path('/home');來改變路由 $scope.main = { name: 'user頁面', toHomeView: function () { $location.path('/home'); } } when()中的引數
第一個是路由路徑 第二個是配置引數 template:對應的頁面模版 templateUrl:對應的模版路徑 controller:對應的控制器 resolve:該屬性會以健值對物件的形式,給相關的路由的控制器繫結服務或值。然後把執行的結果或服務引用,注入到控制器中。注意:與factory()結合使用 redirectTo:重定向路徑地址 reloadOnSearch: true/false    如果為true,每次查詢串發生變化都會引起路由重新整理;如果味false,查詢串發生變化不會引起路由變化 如: 1、template: '<div>other模版</div>', 2、templateUrl: 'home.html', 3、controller: 'homeController', 4、resolve: { //該物件的屬性與服務都可以注入到homeController控制器中使用 //屬性值必須是服務的名字 res: 'cool', //函式引數必須是服務的名字 getData: function (GetData) { return GetData; }, getDataTwo: function (GetDataTwo) { return GetDataTwo.getDataJson; } } .factory('cool',function () { return 'cool'; }) .factory('GetData',['$http',function ($http) { return function () { return $http({method: 'get',url: 'data/news.json'}); }; }]) .factory('GetDataTwo',['$http',function ($http) { return { getDataJson: $http({method: 'get', url: 'data/news.json'}) }; }]) 5、(1)redirectTo: '/home' (2) /** * @param a 物件,裡面的屬性都是路由引數 * @param b 路由路徑 * @param c 查詢串物件 * @returns {string} */ redirectTo: function (a,b,c) { console.log([a,b,c]); return '/home'; } 在控制器中設定查詢串 $location.search('password=123');