Angular JS 入門(一)

百度百科對Angular JS的簡介


AngularJS? 誕生于2009年,由Misko Hevery 等人創(chuàng)建,后為Google所收購。是一款優(yōu)秀的前端JS框架,已經(jīng)被用于Google的多款產(chǎn)品當(dāng)中。AngularJS有著諸多特性,最為核心的是:MVC、模塊化、自動化雙向數(shù)據(jù)綁定、語義化標(biāo)簽、依賴注入等等。

我的學(xué)習(xí)


寫個小程序看看Angular JS的效果

下載Angular Js文件,跟其他js引用方式一樣,能用url,也能下載都本地直接加載。

下載或者引用url可為:

http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js

當(dāng)然,現(xiàn)在已經(jīng)到2.0+版本了,可以下載最新版本去玩。

我是下載放到本地,跟html同一目錄。

目錄結(jié)構(gòu):


目錄結(jié)構(gòu)


Angular JS表達式使用雙大括號{{}},如{{name}}。必須聲明ng-app才能顯示angular js的效果。

程序:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="angular.min.js"></script>
</head>
<body>

<div ng-app="" ng-init="name='Lily'">
?? <p>名字 : <input type="text" ng-model="name"></p>
?? <h1>Hello {{name}}</h1>
?? <span ng-bind="name" style="background-color:red"></span>
?? <h2>1+2={{1+2}}</h2>
?? <h2>1+2+3+''+2={{1+2+3+''+2}}</h2>
?? <h2>1+2+''+2+3={{1+2+''+2+3}}</h2>
?? <h2>1+''+2={{1+''+2}}</h2>
?? <h2>''+1+2={{''+1+2}}</h2>
?? <h2>''+1+2+3={{''+1+2+3}}</h2>
?? <h2>1+2+''={{1+2+''}}</h2>
</div>
<div>
?? <p>未申明ng-app/名字 : <input type="text" ng-model="name"></p>
?? <h1>Hello {{name}}</h1>
</div>

</body>
</html>



頁面效果


思考:為什么不給ng-app取個名字呢

如果ng-app指定一個名字,則該模塊下必須要有ng-controller 且javascript要定義該controller,否則表達式不起作用。

如上述代碼,如果 ng-app=""改為 ng-app="myApp",則無angular js的效果,如下圖:


ng-app指定名字未使用control

正確打開方式,應(yīng)該為:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="angular.min.js"></script>
</head>
<body>

<div ng-app="myApp" ng-init="name='Lily'" ng-controller="myControl">
?? <p>名字 : <input type="text" ng-model="name"></p>
?? <h1>Hello {{name}}</h1>
?? <span ng-bind="name" style="background-color:red"></span>
?? <h2>1+2={{1+2}}</h2>
?? <h2>1+2+3+''+2={{1+2+3+''+2}}</h2>
?? <h2>1+2+''+2+3={{1+2+''+2+3}}</h2>
?? <h2>1+''+2={{1+''+2}}</h2>
?? <h2>''+1+2={{''+1+2}}</h2>
?? <h2>''+1+2+3={{''+1+2+3}}</h2>
?? <h2>1+2+''={{1+2+''}}</h2>
</div>
<script>
?var myApp = angular.module('myApp',[]);
?myApp.controller('myControl',function($scope){
??$scope.name = 'Huang';?
?});
</script>

</body>
</html>

給ng-model初始化值

上述代碼包括了兩種初始化值的方式:

1) ng-init="name='Lily'"

2) 使用了controller為name賦值,初始化為Huang

最后頁面顯示的Lily,所以可以認為ng-init的賦值優(yōu)先級比較高。


思考:同一個ng-app可以調(diào)用多個control嗎?

當(dāng)然可以,同一個ng-app可以調(diào)用多個controller,目前我只知道在不同html元素調(diào)用不同controller,不知道同一個元素是否能調(diào)用多個controller

比如一個ng-app中有兩個子div,每個div都分別調(diào)用不同的controller。

<div ng-app="myApps" >???????????????????????????????????????????????????????????????????????????????????????????????????? <div ng-controller="myCtrl">名: <input type="text" ng-model="firstName" ><br></div>
<div ng-controller="myCtrl1">姓: <input type="text" ng-model="lastName"><br></div>?? </div>

javascript:?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

var app = angular.module('myApps', []);
app.controller('myCtrl', function($scope) {
??? $scope.firstName= "Zor";
}).controller('myCtrl1', function($scope) {
??? $scope.lastName= "OY";
});

每個control只能對調(diào)用它的元素里的ng-model做操作。上述,如果myCtrl中對lastName賦值是賦不了;同樣myCtrl1中對firstName賦值也是賦不了的。

思考:一個頁面是否能加載多個ng-app

我覺得行,那么如何加載?試過就簡單的寫兩個ng-app,第二個ng-app里的表達式顯示出來仍然是表達式。所以這個問題就留給下次再說。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容