angular例子笔记

时间:2023-03-09 19:38:29
angular例子笔记

  

  学习angular的插件写法和制作;

<!DOCTYPE html>
<html ng-app="APP">
<head>
<meta charset="UTF-8">
<title>angular-refresh example</title>
<script src="http://cdn.bootcss.com/angular.js/1.3.0-beta.12/angular.min.js"></script>
</head>
<body ng-controller="ExampleController">
<angular-refresh
url="http://filltext.com/?rows=10&fname={firstName}&lname={lastName}&callback=JSON_CALLBACK"
ng-model="people"
interval="5000"
method="jsonp">
</angular-refresh>
<ul ng-repeat="person in people">
<li>{{person.fname}} {{person.lname}}</li>
</ul>
<!--
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js"></script>
-->
<script>
//直接依赖这个datarefresh模块;
angular.module("APP",["datarefresh"]).
controller("ExampleController",['$scope',function($scope){
}]);
</script> <script>
angular.module('datarefresh', [])
.directive('angularRefresh', ['$parse', '$timeout', '$http', function ($parse, $timeout, $http) {
return {
//E为tag类型, A为属性, C应该是注释;
restrict: 'E',
//template的元素肯定要一个总元素;
template: '<div></div>',
/*
这个元素相当于是配置..一点用处都没有;
*/
replace: true,
link: function (scope, element, attrs) {
console.log(element);
var isRunning = true;
var method = 'get';
var url = ''; function successFunction(data) {
if (data !== undefined && isRunning) {
try {
/*
$parse(attrs.ngModel).assign返回的是一个闭包;
这个语句相当于执行 :
1 : scope.people = data;
2 : scope.$apply()
*/
$parse(attrs.ngModel).assign(scope, data);
}
catch (error) {
//Just in case scope got detroyed while we were trying to update
console.log(error);
}
} if (isRunning) {
$timeout(function () { refreshFromUrl(url, interval); }, interval);
}
} function refreshFromUrl(url, interval) {
if (isNaN(interval)) {
interval = 2000;
}; //通过$http的方式获取JSONP的数据;
$http[method](url).success(function (data, status, headers, config) {
//对数据整理;
successFunction(data);
})
.error(function (data, status, headers, config) {
console.log(data);
});
} //通过各种方式获取配置验证是否为空;
if (attrs.ngModel !== undefined && attrs.ngModel !== '' && attrs.url !== undefined && attrs.url !== '')
{
//获取间隔刷新的时间;
var interval = parseInt(attrs.interval);
if(isNaN(interval))
interval = 2000; //获取请求方式;
if(attrs.method !== undefined && attrs.method !== '') {
if(attrs.method.toLowerCase() == 'get' || attrs.method.toLowerCase()=='jsonp') {
method = attrs.method.toLowerCase();
}
} //配置url;
url = attrs.url;
refreshFromUrl(url, interval);
} scope.$on('$destroy', function () {
isRunning = false;
});
}
}
}]);
</script>
</body>
</html>