Ⅰ angularjs如何实现图片延迟加载
jquery的做法是监听window.scroll,然后判断图片的位置,是否需要切换src属性,那么angular也一样,只是由于angular需要将DOM操作写在指令里面,所以需要你自己去实现指令,大概思路如下;
全选复制放进笔记<lazyload>
<img data-source="real.png" src="holder.png" />
</lazyload>
angular.mole('yourapp').directive('lazyload', function () {
return {
restrict: 'EA',
replace: false,
link: function (scope, element, attrs) {
angular.element(window).on('scroll', function() {
// 计算距离 切换img属性
});
}
};
});
如果希望效率像jquery一样,只有一个监听,那么这个lazyLoad的逻辑需要考虑如何查询
如果希望简单省事,指令直接写在img属性这一层就行了,只是这样会注册和图片一样多的事件回调。
Ⅱ 使用angularjs编写一个验证邮箱地址是否正确的程序
这是 Angular.JS 几乎电子邮件检查元素代码是好的但这有一个问题。 当我填写电子邮件检查元素时,它将重置 !
我写这篇文章到电子邮件检查元素的示例。
"[email protected]"
但这重置 !当我写 '.' <-点。
"test@test"<-好的
"test@test"。 <-重置输入。当我写 '.' <-
发生问题的原因吗?
Javascript
<script>
angular.mole('test', [])
.controller('MyController', ['$scope', '$window', function($scope, $window) {
$scope.sendMessage=function(toSb){
alert(toSb);
};
}])
.directive('emailInput', function($compile) {
return {
restrict: 'C',
template: '<input type="email" ng-model="emailtext" required>{{emailtext}}',
link: function(scope, elem, attrs){
scope.name="emailAddress";
var input = elem.find("input")[0];
input.name = "emailAddress";
$compile(input)(scope);
}
};
});
</script>
HTML
<form name="myForm">
<div class="email-input"></div>
inputIsValid={{myForm.emailAddress.$valid}}<br>
<span class="error" ng-show="myForm.emailAddress.$error.required">Required!</span>
<span class="error" ng-show="myForm.emailAddress.$error.email">Not valid email!</span>
</form>
解决方法 1:
你需要使你的指令与替换选项和名称属性得到指令元素 (基本上做不重新编译一次输入)。它是展示古怪行为时,你有你的指令编译,它将重置 (未定义) 解析后的 modelValue 但以某种方式在这种情况下,它将 viewvalue 以及重置角验证。你可以看到它并不会发生是否您使用的输入的类型直接,看来像是编译模板导致了此问题。
.directive('emailInput', function ($compile) {
return {
restrict: 'C',
replace:true,
template: '<input type="email" ng-model="emailtext" required>',
link: function (scope, elem, attrs) {
}
};
和
<div class="email-input" name="emailAddress"></div>
Plnkr
Ⅲ “angularjs”怎么监听滚动条
如果你是用的jQuery2.0以上版本,还需要修改ng-infinite-scroll.js程序,将所有的将所有的$window.xxx改为$(window).xxx, elem.xxx改为$(elem).xxx。AngularJS 诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。
拓展:
1、AngularJS 是一个JavaScript 框架。它是一个以 JavaScript 编写的库。它可通过 <script> 标签添加到 HTML 页面。AngularJS 通过指令扩展了 HTML,且通过表达式绑定数据到 HTML。AngularJS 是以一个 JavaScript 文件形式发布的,可通过 script 标签添加到网页中。
2、AngularJS是为了克服HTML在构建应用上的不足而设计的。HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了。所以我做了一些工作(你也可以觉得是小花招)来让浏览器做我想要的事。
3、AngularJS试图成为WEB应用中的一种客户端的解决方案。这意味着它不只是你的WEB应用中的一个小部分,还是一个完整的客户端的解决方案。这会让AngularJS在构建一个CRUD(增加Create、查询Retrieve、更新Update、删除Delete)的应用时显得很"固执"(原文为 opinionated,意指没有太多的其他方式)。但是,尽管它很"固执",它仍然能确保它的"固执"只是在你构建应用的起点,并且你仍能灵活变动。
Ⅳ Angularjs中的页面访问权限怎么设置
其实在ng中做页面访问权有很多种方法,各有利弊,运用的比较多的是拦截器,拦截器使得在前端往后端发送http请求之前或之后做一些操作,比如全局监测用户是否登录,没登陆就要跳转的登录页面,登录就可以访问页面;拦截器的使用往往配合后台数据,也就是获取到最新的‘标示',来确定这个页面或者下个页面要做什么操作;而这里我使用的是一种用前端控制的方式,不用数据交互,理念就是定义好不同等级/阶段可以访问的页面,在路由的地方作拦截,针对一些不同等级/阶段访问权限定义明确的可以参考使用这种方法,代码如下:
......
app.run(['$rootScope', '$state', '$window', function($rootScope, $state, $window) {
$rootScope.$on('$stateChangeStart', function(event, toState, toStateParams) {
//用户访问等级阶段, 0 1 2
Array.prototype.contains = function(needle) {
for(i in this) {
if(this[i] == needle) return true;
}
return false;
}
var status=new Array("user.a","user.b","user.c","user.d","user.e","user.f","user.g");
var status0=new Array("user.a","user.b");
var status1=new Array("user.c","user.d");
var status2=new Array("user.a","user.b","user.c","user.d");
if (status.contains(toState.name)) {
if(initObj.getStatus()=="0"){
if(!status0.contains(toState.name)){
event.preventDefault();
$state.go('user.approve');
}
return;
}
if(initObj.getStatus()=="1"){
if(!status1.contains(toState.name)){
event.preventDefault();
$state.go('user.result');
}
return;
}
if(initObj.getStatus()=="2"){
if(!status2.contains(toState.name)){
event.preventDefault();
$state.go('user.result');
}
return;
Ⅳ angularjs 怎样注销事件
参考以下方来法:
$scope.$on("$destroy", function() {
//清除配置,不然源scroll会重复请求
})
在Controller中监听$destory事件,这个事件会在页面发生跳转的时候触发。
在页面跳转之后,这个页面监听的一些全局事件,比如window.scroll事件在下一页scroll的时候还会继续被触发
在这个事件的回调中,清除当前页面的监听或者一些参数保证下面的页面不会再触发当前页面的事件回调
Ⅵ 怎么用angular js实现mqtt协议
使用开发工具打开目录
打开index.html,在<body>的最下面添加angular.js的引用
<script src="node_moles/angular/angular.js"></script>
打开app.js将window对象换成angular对象,代码结构如下:
(function (angular) {
'use strict';
})(angular);
创建一个模块:
var myApp = angular.mole('MyTodoMvc', []);
创建一个Controller
myApp.controller('MainController', ['$scope', function ($scope) {
};
暴露text到页面
$scope.text = "";
暴露todos到页面
$scope.todos = [
{
id: 1,
text: '学习',
completed: false
},
{
id: 2,
text: '睡觉',
completed: false
},
{
id: 3,
text: '敲代码',
completed: true
}
];
Ⅶ angularjs window.localstorage存储的数据任何controller都可以读取吗
ocalStorage存储方法 localStorage.name = localStorage["name"]='vanida';localStorage.setItem("name","vanida");//这三种设置值方式是一样的; localStorage获取值方法 var name = localStorage["name"] = localStorage.name= localStorage...
Ⅷ angularjs怎么关闭tab页
window.opener=null;
window.open('','_self');
window.close();
只能关闭当前Tab