Ⅰ 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