src和href屬性
Angularjs中src應寫成ng-src,href應寫成ng-href 例如:
表達式
在模板中可以進行簡單的數學運算、比較運算、布林運算、位元運算、引用數組、和物件符號等儘管我們可以使用表達式做很多事情,但是表達式是使用一個自定義的解釋器來執行的(Angular的一部分),而不是用Javascript得eval()函數執行的,所以限制較大。
雖然很多方面這裡的表達式比Javascript更嚴格,但是他們對undefined和null的容錯性更好,如果遇到錯誤,模板只是簡單的什麼都不顯示,而不會拋出一個NullPointerException錯誤。 例如:
區分UI和控制器的職責
控制器是綁定在特定DOM片段上的,這些片段就是他們需要負責管理的內容。有兩種主要的方法可以把控制器關聯到DOM節點上,一種在模板中透過ng-controller聲明,第二種是透過路由把它綁定到一個動態載入的DOM模板片段上,這個模板叫視圖。 我們可以創建嵌套的控制器,他們可以透過繼承數結構來共享資料模型和函數,真實的嵌套發生在$scope物件上,透過內部的原始繼承機制,父控制器物件的$scope會被傳遞到內部嵌套的$scope(所有屬性,包括函數)。例如:
利用$scope暴漏模型資料
可以顯示建立$scope屬性,例如$scope.count = 5。也可以間接的透過模板本身創建資料模型。
透過表達式。例如
在表單項目上使用ng-model
與表達式類似,ng-model上指定的模型參數同樣工作在外層控制器內。唯一的不同點在於,這樣會在表單項目和指定的模型之間建立雙向綁定關係。
使用watch監控資料模型的變化
$watch的函數簽名是: $watch(watchFn,watchAction,deepWatch)
watchFn是一個帶有Angular表達式或函數的字串,它會傳回被監控的資料模型的目前值。 watchAction是一個函數或表達式,當watchFn發生變化時被呼叫。其函數簽名為:
function(newValue,oldValue,scope) deepWatch 如果設定為true,這個可選的布林值參數將會指令Angular去檢查被監控物件的每一個屬性是否改變了。如果你向監控陣列中的元素,或物件上的所有屬性,而不是值監控一個簡單的值,你就可以使用這個參數。請注意,Angular需要遍歷數組或對象,如果集合比較大,那麼運算複雜呢就會比較的重。
$watch函數會回傳一個函數,當你不需要接收變更通知時,可以用這個傳回的函數來註銷監控器。
如果我們需要監控一個屬性,然後接著註銷監控,我們就可以使用以下的程式碼: var dereg = $scope.$watch('someModel.someProperty',callbackOnChange());
... dereg();
實例程式碼如下:
您的購物車標題>
函數 CartController($scope) {
$scope.bill = {};
$scope.items = [
{則以 {方式與油漆盆』,數量:8,價格:3.95},
{則為:'圓點',數量:17,價格:12.95},
{則為:'鵝卵石與數量:5,價格:6.95}
];
$scope.totalCart = function() {
var 總計 = 0;
for (var i=0,len=$scope.items.length;i
}
回報總計;
}
$scope.subtotal = function() {
返回 $scope.totalCart() - $scope.bill.discount;
}
函數calculateDiscount(newValue,oldValue,scope) {
$scope.bill.discount = newValue > 100? 10 : 0;
}//這裡的watchAction函數
$scope.$watch($scope.totalCart,calculateDiscount);//這裡的watch函數
}
腳本>
頭>
{{item.title}}
{{item.price |幣}}
{{商品.價格 * 商品.數量 |貨幣}}
腳本>
身體>
上面的watch有效能問題,calculateTotals函數執行了6次,其中三次是因為循壞,每次循環,都會重新渲染資料。
下面是改進後的程式碼
您的購物車標題>
函數 CartController($scope) {
$scope.bill = {};
$scope.items = [
{則以 {方式與油漆盆』,數量:8,價格:3.95},
{則為:'圓點',數量:17,價格:12.95},
{則為:'鵝卵石與數量:5,價格:6.95}
];
var TotalCart = function() {
var 總計 = 0;
for (var i=0,len=$scope.items.length;i
}
$scope.bill.totalcart = 總計;
$scope.bill.discount = 總計 > 100? 10:0;
$scope.bill.subtotal = 總計 - $scope.bill.discount;
}
$scope.$watch('items',totalCart,true);//只用watch著items的變化
}
腳本>
頭>
{{item.title}}
{{item.price |幣}}
{{商品.價格 * 商品.數量 |貨幣}}
腳本>
身體>
對於大型的itms吞吐量來說,如果每次在Angular顯示頁面時只重新計算bill屬性,那麼效能會好很多。透過建立一個帶有watchFn的$watch函數,我們可以實現這一點。
$scope.$watch(
var totalCart = function() {
var total = 0;
for (var i=0,len=$scope.items.length;i
; }
$scope.bill.totalcart = total;
$scope.bill.discount = total > 100 ? 10 :0;
$scope.bill.subtotal = total - $scope.bill.discount;
});
監控多東西
如果你想監控多個屬性或對象,並且當其中任何一個發生變化時就會去執行一個函數,你有兩種基本的選擇:
監控把這些屬性連接起來之後的值
把他們放在一個陣列或物件中,然後給deepWAtch參數傳遞一個值
分別說明:
在第一種情況下,如果你的作用域中存在一個things對象,它帶有兩個屬性a和b,當這兩個屬性發生變化時都需要執行callMe()函數,你可以同時監控這兩個屬性$scope.$watch('things.a things.b',callMe(...));
當清單非常長,你需要寫一個函數來傳回連線之後的值。
在第二種情況下,需要監控things物件的所有屬性,你可以這麼做:
$scope.$watch('things',callMe(...),true);
使用module組織依賴關係
provider(name,Object OR constructor()) 說明: 一個可設定的服務,建立邏輯比較的複雜。如果你傳遞了一個Object作為參數,那麼這個Object物件就必須帶有一個名為$get的函數,而這個函數需要回傳服務的名稱。否則,angularjs會認為你傳遞的時一個建構函數,呼叫建構函數會回傳服務實例物件。
factory(name,$get Function()) 說明:一個不可設定的服務,創造邏輯比較的複雜。你需要指定一個函數,當呼叫這個函數時,會傳回服務實例。可以看成provider(name,{$get:$getFunction()})的形式。
service(name,constructor()) 一個不可設定的服務,創造邏輯比較的簡單。與上面的provider函數的constructor參數類似,Angular呼叫他可以建立服務實例。
使用module factory的例子
您的購物車標題>
腳本>
var ShoppingModule = angular.module('ShoppingModule',[]);
ShoppingModule.factory('Items',function() {
var items = {};
items.query = function() {
返回[
{title:'油漆罐',description:'裝滿油漆的罐子』,價格:3.95},
{title:'油漆罐',description:'裝滿油漆的罐子』,價格:3.95},
{title:'油漆罐',description:'裝滿油漆的罐子』,價格:3.95}
];
};
退貨;
});
函數 ShoppingController($scope,Items) {
$scope.items = Items.query();
}
腳本>
頭>
購物! !
表>
身體>
引入第三方模組
在大多數應用程式中,創建供所有程式碼使用的單一模組,並將所有依賴的東西放入這個模組中,這樣就會運作得很好。但是,如果你打算使用第三方包提供的服務或指令,他們一般都標有自己的模組,你需要在應用程式模組中定義依賴關心才能引用他們。 例如:
var appMod = angular.module('app',['Snazzy','Super']);
關於過濾器的例子
您的購物車標題>
腳本>
var ShoppingModule = angular.module('ShoppingModule',[]);
ShoppingModule.filter('titleCase',function() {
var titleCaseFilter = 函數(輸入) {
var Words = input.split(' ');
for(var i=0;i
}
return Words.join(' ');
};
回 titleCaseFilter;
});
函數 ShoppingController($scope) {
$scope.pageHeading = '這是測試案例';
}
腳本>
頭>
{{pageHeading | titleCase}}
身體>

提到API开发,你可能会想到DjangoRESTFramework,Flask,FastAPI,没错,它们完全可以用来编写API,不过,今天分享的这个框架可以让你更快把现有的函数转化为API,它就是Sanic。Sanic简介Sanic[1],是Python3.7+Web服务器和Web框架,旨在提高性能。它允许使用Python3.5中添加的async/await语法,这可以有效避免阻塞从而达到提升响应速度的目的。Sanic致力于提供一种简单且快速,集创建和启动于一体的方法

随着PHP8.0的发布,新增了一种类型别名语法,使得使用自定义的类型变得更加容易。在本文中,我们将深入了解这种新的语法,以及它对开发人员的影响。什么是类型别名?在PHP中,类型别名本质上是一个变量,它引用另一个类型的名称。这个变量可以像其他类型一样使用,并在代码中的任何地方声明。这种语法的主要作用是为常用的类型定义自定义别名,使得代码更加易于阅读和理解。

Javascript 是一个非常有个性的语言. 无论是从代码的组织, 还是代码的编程范式, 还是面向对象理论都独具一格. 而很早就在争论的Javascript 是不是面向对象语言这个问题, 显然已有答案. 但是, 即使 Javascript 叱咤风云二十年, 如果想要看懂 jQuery, Angularjs, 甚至是 React 等流行框架, 观看《黑马云课堂JavaScript 高级框架设计视频教程》就对了。

在如今信息时代,网站已经成为人们获取信息和交流的重要工具。一个响应式的网站能够适应各种设备,为用户提供优质的体验,成为了现代网站开发的热点。本篇文章将介绍如何使用PHP和AngularJS搭建一个响应式网站,从而提供优质的用户体验。PHP介绍PHP是一种开源的服务器端编程语言,非常适用于Web开发。PHP具有很多优点,如易于学习、跨平台、丰富的工具库、开发效

PHP是一种广泛应用于Web开发的服务器端脚本语言,而PHP8.0版本中引入了一种新的父类调用语法,让面向对象编程更加方便和简洁。在PHP中,我们可以通过继承的方式创建一个父类和一个或多个子类。子类可以继承父类的属性和方法,并可以通过重写父类的方法来修改或扩展其功能。在普通的PHP继承中,如果我们想在子类中调用父类的方法,需要使用parent关键字来引用父

随着互联网的不断发展,Web应用已成为企业信息化建设的重要组成部分,也是现代化工作的必要手段。为了使Web应用能够便于开发、维护和扩展,开发人员需要选择适合自己开发需求的技术框架和编程语言。PHP和AngularJS是两种非常流行的Web开发技术,它们分别是服务器端和客户端的解决方案,通过结合使用可以大大提高Web应用的开发效率和使用体验。PHP的优势PHP

掌握基本的CSS选择器语法,需要具体代码示例CSS选择器是前端开发中非常重要的一部分,它可以用来选择和修改HTML文档的各个元素。掌握基本的CSS选择器语法对于编写高效的样式表是至关重要的。本文将介绍一些常见的CSS选择器以及对应的代码示例。元素选择器元素选择器是最基本的选择器,可以通过元素的标签名来选择对应的元素。例如,要选择所有的段落(p元素),可以使用

C语言中乘方运算的语法和用法简介:在C语言中,乘方运算(poweroperation)是一种常见的数学运算,它用于计算一个数的幂。在C语言中,我们可以使用标准库函数或者自定义函数来实现乘方运算。本文将详细介绍C语言中乘方运算的语法和用法,并提供具体的代码示例。一、使用math.h中的pow()函数在C语言中,math.h标准库中提供了pow()函数,用于执


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器