几个易忽略的directive
ng-disable 常用于比如让button失效
ng-options 下拉选框
<select ng-model="car.color" ng-options="color for color in colors">
Pick a color
</select>
ng-style
<td><span ng-bind="car.color" ng-style="{color: car.color}"></span>
</td>
ngInclude 可以引入一段html,有时可以考虑使用
directive中的scope
@ This prefix passes the data as a string.
= This prefix creates a bidirectional relationship between a controller's scope property and a local scope directive property.
& This prefix binds the parameter with an expression in the context ofthe parent scope. It is useful if you would like to provide some outsidefunctions to the directive.
require - 请求另外的controller,传入当前directive的linking function中。 require需要传入一个directive controller的名称。如果找不到这个名称对 应的controller,那么将会抛出一个error。名称可以加入以下前缀:
? - 不要抛出异常。这使这个依赖变为一个可选项。
^ - 允许查找父元素的controller
transclude
http://www.html-js.com/article/1869,http://my.oschina.net/gejiawen0913/blog/187397
factory返回的是一个object(单例),
service方式创建的服务是一个多例,即可以通过new操作符进行操作。
provider方式 http://hellobug.github.io/blog/angularjs-providers/
run 通过run对于运行时的变量和常量做配置。保证在所有程序处访问此变量都是。
如
app.run(function ($http) { $http.defaults.headers.common.Accept = "application/json";
}).run(function ($http) { $http.defaults.cache = true;
});
$q:deferred首先创建好成功和失败的的处理方法resolve和reject,然后用返回deferred.promise承诺对象,然后可以拿到这个promise,然后.then(functinon(data){成功},function(data){失败})。
http://blog.csdn.net/lglgsy456/article/details/32335127
// $q 是内置服务,所以可以直接使用
ngApp.factory('UserInfo', ['$http', '$q', function ($http, $q) {
return {
query : function() {
var deferred = $q.defer(); // 声明延后执行,表示要去监控后面的执行
$http({method: 'GET', url: 'scripts/mine.json'}).
success(function(data, status, headers, config) {
deferred.resolve(data); // 声明执行成功,即http请求数据成功,可以返回数据了
}).
error(function(data, status, headers, config) {
deferred.reject(data); // 声明执行失败,即服务器返回错误
});
return deferred.promise; // 返回承诺,这里并不是最终数据,而是访问最终数据的API
} // end query
};
}]);
angular.module('ngApp')
.controller('MainCtrl', ['$scope', 'UserInfo', function ($scope, UserInfo) { // 引用我们定义的UserInfo服务
var promise = UserInfo.query(); // 同步调用,获得承诺接口
promise.then(function(data) { // 调用承诺API获取数据 .resolve
$scope.user = data;
}, function(data) { // 处理错误 .reject
$scope.user = {error: '用户不存在!'};
});
}]);
$rootscope上的变量是在哪都可以访问的。