发表于: 2017-06-03 18:29:02

1 1094


今天完成的事情;

最新职位静态页面及轮播图编写,自适应。angular路由配置的相关理解。


明天的计划:

明天武汉集体出游,哈哈哈。晚上听下小课堂,处理小课堂,简书等。


遇到的问题:

1 在进行懒加载时,组件,指令等为什么这么挂载:

// 将Angular的组件,指令等等的注册接口挂到app对象上,可以在应用程序启动之后任意可以添加功能
function provider($provide, $compileProvider, $controllerProvider, $filterProvider) {
app.controller = $controllerProvider.register;
   app.directive = $compileProvider.directive;
   app.filter = $filterProvider.register;
   app.factory = $provide.factory;
   app.service = $provide.service;
   app.constant = $provide.constant;
   app.value = $provide.value
}

解答:

一般来说我们想注册controller是过这种方式的:

angular.module('app', [])
.controller('ACtrl', function ($scope) {
$scope.ctrl = 'A Controller';
});

但是这个时候ACtrl还没有注册到Angular的内部,我们无法使用,只有程序启动后,Angular才会调用$controllerProvider.register帮我们注册到Angular内部,上面的代码最终会被这样调用:

$controllerProvider.register('ACtrl', function ($scope) {
$scope.ctrl = 'A Controller';
});

将Angular的组件,指令等等的注册接口挂到app对象上。这样做有什么用呢?可以在应用程序启动之后任然可以添加功能:

var app = angular.module('app', [])
.controller('ACtrl', function ($scope) {
$scope.ctrl = 'A Controller';
});

程序启动之后我们在添加BCtrl:

app.controller('BCtrl', function ($scope) {
$scope.ctrl = 'B Controller';
});

这个时候BCtrl是没有办法使用的,应用程序都启动完毕了,不会在把BCtrl注册到Angular内部了。但是换成这种方式就不一样了,BCtrl依旧可以注册到Angular内部:

var app;
angular.module('app')
.config(function ($controllerProvider, $compileProvider, $filterProvider, $provide) {
app.controller = $controllerProvider.register;
})

//after bootstrap

app.controller('BCtrl', function ($scope) {
$scope.ctrl = 'B Controller';
});


收获:

懒加载遇到angular路由配置的相关理解。


返回列表 返回列表
评论

    分享到