前端开发框架总结之Angular实用技巧(三)

                             前端开发框架总结之Angular实用技巧(三)

上文讲了Angular中页面刷新和数据绑定的一些知识点,了解了这些之后让你对页面和js中的数据同步做到随心所欲,解决各种页面刷新不出来,变量不生效等问题,同时你还可以利用自定义指令让项目变得更加组件化、智能化、简单化。今天我们再来介绍下angular路由相关的知识。

  • angular路由

angular自带的路由个人觉得不够灵活,所有项目中一直使用的是angular-ui-router.js插件。(插件可自行去github上下载)

要使用路由插件,需要在module中注入ui.router模块。

接下来是使用$stateProviderd进行路由的配置。主要包括路由的name,url,templateUrl,controller,params,resolve这几个属性。其中:name为路由的名称,在路由跳转的时候会用到。

url为路由的地址,这个对应浏览器地址栏中显示的url。

templateUrl为路由模板地址。这个是该路由会加载的页面片段对应的html文件路径。

controller为改路由对应的控制器。

params为路由加载是附带传递的参数。

resolve为返回的是一个key-value的对象,value是一个可以依赖注入的函数,函数的返回是一个promise,我们可以利用这个特性对页面js进行懒加载。

js代码片段

      .state('home.detailS.built', {
            url: '/views/detailS/built',//服务管理-编译管理
            templateUrl: 'views/service/service/built.html',
            controller: 'builtCtrl',
            params: {
                "serviceName": null
        	},
            resolve: {
                deps: ['$ocLazyLoad', function ($ocLazyLoad) {
                    return $ocLazyLoad.load([
                        'script/controllers/service/service/detailS.js' + '?ver=' + 1508388363809
                    ]);
                }]//使用参数注入方式,避免压缩后参数有问题
            }
        })

要进行路由的加载还需要在HTML页面进行相应的配置。

示例代码如下:

<body ng-controller="indexCtrl">
    <div id="content" ui-view ></div>
</body>

路由会替换页面中的ui-view部分的内容。

路由的跳转方法如下:

$state.go(name, opt);

其中name是路由的名称,opt是路由中所携带的参数。

默认路由的设置方式如下:

$urlRouterProvider.otherwise('/index/login');

路由的拦截方式如下:

app.run(['$transitions','$state',function($transitions,$state){
	$transitions.onBefore({},function(transition){
		var result = 1;
		if(result == 1){
            $state.go('login');
            transition.abort();
		}
		else if(result == 0){
			alert('没有权限!');
            transition.abort();
        }
	});
}]);

多级路由的实现方法是通过路由名称的规则来实现的,举个例子home.detailS.built的命名方式极为一个三级路由对应的是三个ui-view的嵌套。

多级路由主要是主要scope域的概念就不难理解了。想理解的更深入还需要大家亲自动手配置一下才可以。

猜你喜欢

转载自blog.csdn.net/wiki_Wei/article/details/83657038
今日推荐