本文通过一些具体的例子介绍了关于AngularJS的基本使用,包括指令、表达式、过滤器、模块化、MVC以及内置服务模块等等。
AngularJS 是由 Google 开发的一个用于构建动态 Web 应用的前端 JavaScript 框架,它遵循 MVC(Model - View - Controller)或 MVVM(Model - View - ViewModel)架构模式,能帮助开发者更高效地组织和管理代码。具有双向数据绑定、模块化、指令系统、依赖注入等核心特性,可显著提高开发效率和代码可维护性。
{{ }}
中的 JavaScript 代码片段,用于在 HTML 模板中绑定数据和执行简单的运算。DOCTYPE html>
<html ng-app>
<head>
<meta charset="UTF-8">
<title>表达式title>
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js">script>
head>
<body>
<div ng-init="productPrice = 99.99">
售价: {{ productPrice }} 元
div>
body>
html>
展示数据
。MVC基本原理:控制器更新模型,模型变化自动反映到视图;视图中的用户操作通过控制器更新模型。
DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>MVC示例title>
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js">script>
<script>
var app = angular.module('myApp', []);
app.controller('ProductController', function ($scope) {
$scope.products = [
{ name: '手机', price: 2999 },
{ name: '电脑', price: 5999 },
{ name: '耳机', price: 299 }
];
});
script>
head>
<body>
<div ng-controller="ProductController">
<h2>商品列表h2>
<ul>
<li ng-repeat="product in products">
{{ product.name }} - {{ product.price }} 元
li>
ul>
div>
body>
html>
$scope
是 AngularJS 中的一个对象,它充当控制器和视图之间的桥梁,用于在两者之间传递数据和方法。$rootScope
,每个控制器都有自己的子作用域,作用域可以嵌套,子作用域可以继承父作用域的属性和方法。DOCTYPE html>
<html ng-app="cartApp">
<head>
<meta charset="UTF-8">
<title>$scope 示例title>
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js">script>
<script>
var app = angular.module('cartApp', []);
app.controller('CartController', function ($scope) {
$scope.cartCount = 0;
$scope.addToCart = function () {
$scope.cartCount++;
};
});
script>
head>
<body>
<div ng-controller="CartController">
<h2>购物车h2>
<p>购物车商品数量: {{ cartCount }}p>
<button ng-click="addToCart()">添加到购物车button>
div>
body>
html>
angular.module()
方法创建模块,第一个参数是模块名称,第二个参数是依赖的模块数组。ng-app
指令指定应用的主模块。DOCTYPE html>
<html ng-app="ecommerceApp">
<head>
<meta charset="UTF-8">
<title>模块化示例title>
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js">script>
<script>
// 商品列表模块
var productModule = angular.module('productModule', []);
productModule.controller('ProductController', function ($scope) {
$scope.products = [
{ name: '手机', price: 2999 },
{ name: '电脑', price: 5999 },
{ name: '耳机', price: 299 }
];
});
// 购物车模块
var cartModule = angular.module('cartModule', []);
cartModule.controller('CartController', function ($scope) {
$scope.cartCount = 0;
$scope.addToCart = function () {
$scope.cartCount++;
};
});
// 主模块,依赖商品列表和购物车模块
var app = angular.module('ecommerceApp', ['productModule', 'cartModule']);
script>
head>
<body>
<div ng-controller="ProductController">
<h2>商品列表h2>
<ul>
<li ng-repeat="product in products">
{{ product.name }} - {{ product.price }} 元
li>
ul>
div>
<div ng-controller="CartController">
<h2>购物车h2>
<p>购物车商品数量: {{ cartCount }}p>
<button ng - click="addToCart()">添加到购物车button>
div>
body>
html>
|
来应用过滤器,如 {{ data | filterName: parameter }}
。currency
用于格式化货币,date
用于格式化日期等。DOCTYPE html>
<html ng-app="filterApp">
<head>
<meta charset="UTF-8">
<title>过滤器示例title>
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js">script>
<script>
var app = angular.module('filterApp', []);
app.controller('ProductController', function ($scope) {
$scope.productPrice = 99.99;
});
script>
head>
<body>
<div ng- controller="ProductController">
<h2>商品价格h2>
<p>格式化后的价格: {{ productPrice | currency }}p>
div>
body>
html>
$http
用于发送 HTTP 请求,$timeout
用于延迟执行代码等。angular.module().service()
方法创建自定义服务。DOCTYPE html>
<html ng-app="productApp">
<head>
<meta charset="UTF-8">
<title>$http 服务示例title>
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js">script>
<script>
var app = angular.module('productApp', []);
app.controller('ProductController', function ($scope, $http) {
$http.get('products.json')
.then(function (response) {
$scope.products = response.data;
})
.catch(function (error) {
console.error('获取商品列表失败:', error);
});
});
script>
head>
<body>
<div ng-controller="ProductController">
<h2>商品列表h2>
<ul>
<li ng-repeat="product in products">
{{ product.name }} - {{ product.price }} 元
li>
ul>
div>
body>
html>
ng-repeat
用于循环渲染列表,ng-click
用于处理点击事件等。angular.module().directive()
方法创建自定义指令。DOCTYPE html>
<html ng-app="directiveApp">
<head>
<meta charset="UTF-8">
<title>自定义商品卡片指令title>
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js">script>
<script>
var app = angular.module('directiveApp', []);
app.directive('productCard', function () {
return {
restrict: 'E',
scope: {
product: '='
},
template: '' +
'{{ product.name }}
' +
'{{ product.price | currency }}
' +
''
};
});
app.controller('ProductController', function ($scope) {
$scope.products = [
{ name: '手机', price: 2999 },
{ name: '电脑', price: 5999 },
{ name: '耳机', price: 299 }
];
});
script>
head>
<body>
<div ng - controller="ProductController">
<h2>商品列表h2>
<product-card ng-repeat="product in products" product="product">product-card>
div>
body>
html>
← 上一篇 Ajax——在OA系统提升性能的局部刷新 |
记得点赞、关注、收藏哦!
|
下一篇 JUC小册——公平锁和非公平锁 → |