标签:
- 可以通过
angular.module()
方法操作模块- 注意:该方法只有在传入两个参数时才会创建模块,否则为获取已有模块
// 第一个参数为模块名,第二个参数为当前这个模块所依赖的模块列表
angular.module(‘ModuleName‘, []);
var existModule = angular.module(‘ExistModule‘);
比如:
比如:
当下的企业开发,如果使用Angular,主要就是开发对应的控制器和模型
定义控制器可以有三种方式,注意第一种已经被淘汰
在最早期的 Angular 代码中可能会见到以全局函数的方式定义的控制器:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>早期的控制器定义方式-全局函数</title>
</head>
<body ng-app>
<div ng-controller="FooController">
<input type="button" value="clicked me!" ng-click="say()">
</div>
</body>
</html>
function FooController($scope) {
$scope.say = function(){
console.log(‘hello angular‘);
};
}
这种方式现在已经不被支持,就算没有淘汰也不应该使用,太low(全局作用域的问题)
Angular中最常见的一种使用方式,通过模块中定义的controller
方法定义控制器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>常用方式(挂载在某个模块下)</title>
</head>
<body ng-app="MyModule">
<div ng-controller="FooController">
<input type="button" value="clicked me!" ng-click="say()">
</div>
</body>
</html>
angular.module(‘MyModule‘, [])
.controller(‘FooController‘, function($scope) {
$scope.say = function(){
console.log(‘hello angular‘);
};
});
对于喜欢通过定义构造函数的方式编写面向对象代码的同学可以使用构造函数的形式定义一个控制器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>面向对象的方式</title>
</head>
<body ng-app="MyModule">
<div ng-controller="FooController as context">
<input type="button" value="clicked me!" ng-click="context.say()">
</div>
</body>
</html>
function FooController() {
this.message = ‘hello angular‘;
}
FooController.prototype.say = function() {
console.log(this.message);
};
angular.module(‘MyModule‘, [])
.controller(‘FooController‘, FooController);
$scope
之类的参数,必须确保参数名为一个特定值所以,最安全的写法就是不要依赖参数名(依赖不会变化的东西):
angular.module(‘MyModule‘, [])
.controller(‘FooController‘, [‘$scope‘, function(whatever) {
whatever.say = function(){
console.log(‘hello angular‘);
};
}]);
解决方式就是将创建控制器的第二个参数改为一个数组,数组的最后一个成员就是以前的控制器函数,前面的成员就是控制器函数需要注入的对象列表,按照顺序对应
如何根据参数名传入特定对象?
function getFnParams(fn) {
if (typeof fn == ‘function‘) {
var mathes = /.+\((.+)\)/.exec(Function.prototype.toString.call(fn));
if (mathes[1]) {
var args = mathes[1].replace(/\s/g, ‘‘).split(‘,‘);
return args;
}
}
}
function foo(id, name, a1ge) {}
console.log(getFnParams(foo));
大家必须掌握的就是如何根据一个原型抽象出对应的视图模型
类似于模版引擎的语法
使用表达式把数据绑定到 HTML。
相同点:
不同点:
不同于以上的功能性指令,Angular还定义了一些用于和事件绑定的指令:
myModule.directive(‘hello‘, function() {
return {
restrict: ‘E‘,
template: ‘<h1>Hello world</h1>‘,
replace: true
};
});
myApp.directive("ngHover", function() {
return function(scope, element, attrs) {
element.bind("mouseenter", function() {
element.css("background", "yellow");
});
element.bind("mouseleave", function() {
element.css("background", "none");
});
}
});
在定义指令应该使用驼峰命名法,使用指令时应该使用的是全小写字母中划线分割的方式
标签:
原文地址:http://www.cnblogs.com/zh719588366/p/5668167.html