Angular.js 应用中数据模式的删除操作实现

简介: Angular.js 应用中数据模式的删除操作实现

源代码:

<html ng-app="nameApp">
  <head>
    <meta charset="utf-8">
    <title>Angular.js Example</title>
    <script src="angular/angular.js"></script>
    <script>
      var nameApp = angular.module('nameApp', []);
      nameApp.controller('NameCtrl', function ($scope){
        $scope.names = ['Larry', 'Moe'];

        $scope.addName = function() {
          $scope.names.push($scope.enteredName);
          $scope.enteredName = '';
        };

        $scope.removeName = function(name) {
          var i = $scope.names.indexOf(name);
          $scope.names.splice(i, 1);
        };
      });
    </script>
  </head>
  <body ng-controller="NameCtrl">
    <ul>
      <li ng-repeat="name in names">{{name}}
        <a href="" ng-click="removeName(name)">remove me</a>
      </li>
    </ul>
    <form ng-submit="addName()">
      <input type="text" ng-model="enteredName">
      <input type="submit" value="add">
    </form>
  </body>
</html>

在这段 Angular 代码中,我们可以看到一个基本的 Angular 应用的构建过程,涵盖了从模块的创建到控制器的定义,以及视图的动态交互实现。下面,我将逐一解析这段代码的每一个部分和它的功能。


1. Angular 应用的初始化
<html ng-app=`nameApp`>

这行代码定义了一个 Angular 应用的根元素。ng-app 属性指定 AngularJS 模块的名称,这里是 nameApp。该模块在 <script> 标签中定义并配置。这是 AngularJS 初始化并识别整个应用应当控制的 DOM 范围的标记。


2. 创建 Angular 模块
var nameApp = angular.module(`nameApp`, []);


这行 JavaScript 代码创建了一个名为 nameApp 的 AngularJS 模块。angular.module 是一个用于创建、注册和获取 Angular 模块的方法。nameApp 是模块的名称,紧随其后的空数组 [] 表示该模块不依赖于其他模块。


3. 定义控制器
nameApp.controller(`NameCtrl`, function ($scope){
  $scope.names = ['Larry', 'Moe'];

  $scope.addName = function() {
    $scope.names.push($scope.enteredName);
    $scope.enteredName = '';
  };

  $scope.removeName = function(name) {
    var i = $scope.names.indexOf(name);
    $scope.names.splice(i, 1);
  };
});


在这个部分,我们定义了 NameCtrl 控制器。控制器是用来建立视图(HTML)与模型(JavaScript 变量)之间的数据绑定和逻辑处理的地方。


  • $scope.names 初始化为一个包含两个名字的数组。
  • $scope.addName 是一个函数,用于将输入框中的名字添加到列表中,并清空输入框。
  • $scope.removeName 是一个函数,用于从列表中移除一个特定的名字。


4. 数据绑定和视图更新
<body ng-controller=`NameCtrl`>


ng-controller 指令将 NameCtrl 控制器与 <body> 标签关联起来,这意味着在这个 <body> 内部的所有元素都可以访问到 NameCtrl 控制器中的数据和方法。

<ul>
  <li ng-repeat=`name in names`>{{name}}
    <a href=`` ng-click=`removeName(name)`>remove me</a>
  </li>
</ul>


  • ng-repeat 指令在 <li> 标签上创建了一个循环,遍历 $scope.names 数组中的每一个元素。对于数组中的每个元素,都将生成一个 <li> 元素。
  • {{name}} 是 AngularJS 的插值表达式,用于数据绑定,将 JavaScript 变量显示在 HTML 视图中。


  • ng-click 指令添加了一个点击事件监听器,当点击 “remove me” 链接时,会调用 $scope.removeName(name) 函数。
<form ng-submit=`addName()`>
  <input type="text" ng-model=`enteredName`>
  <input type="submit" value="add">
</form>
  • <form> 标签上的 ng-submit 指令处理表单提交事件,触发 addName() 函数。
  • ng-model 指令在 <input> 元素上创建了一个双向数据绑定,将输入框的值绑定到 $scope.enteredName


5. 结论

通过这段代码,我们可以看到 AngularJS 如何通过模块化、控制器和视图指令来创建动态 Web 应用。用户可以通过输入框添加新名字到列表,并可以从列表中删除名字。这展示了 AngularJS 强大的数据绑定和 MVC 架构的应用,使得开发复杂的单页应用(SPA)变得更加简单和高效。

相关文章
|
3天前
|
设计模式 JavaScript 前端开发
js设计模式【详解】—— 构造函数模式
js设计模式【详解】—— 构造函数模式
14 6
|
3天前
|
前端开发 JavaScript 定位技术
JavaScript 等待异步请求数据返回值后,继续执行代码 —— async await Promise的使用方法
JavaScript 等待异步请求数据返回值后,继续执行代码 —— async await Promise的使用方法
11 1
|
6天前
|
JSON JavaScript 中间件
Express.js:构建轻量级Node.js应用的基石
**Express.js 概览**:作为Node.js首选Web框架,Express以其轻量、灵活和强大的特性深受喜爱。自2009年以来,其简洁设计和丰富中间件支持引领开发者构建定制化应用。快速开始:使用`express-generator`创建项目,安装依赖,启动应用。示例展示如何添加返回JSON消息的GET路由。Express适用于RESTful API、实时应用等多种场景,社区支持广泛,助力高效开发。
11 1
|
7天前
|
JavaScript 前端开发 开发者
Angular框架:企业级Web应用的强大后盾
Angular,谷歌支持的JavaScript框架,因其组件化架构、双向数据绑定、依赖注入和路由系统,成为企业级Web开发首选。组件化促进代码重用,如`AppComponent`示例。双向数据绑定简化DOM操作,减少手动工作。依赖注入通过示例展示易管理依赖,提升测试性。路由则支持SPA开发,平滑页面过渡。Angular的特性增强了开发效率和应用质量,使其在Web开发领域保持领先地位。【6月更文挑战第25天】
15 2
|
7天前
|
存储 前端开发 JavaScript
回调函数是JavaScript中处理异步编程的常见模式,常用于事件驱动和I/O操作。
【6月更文挑战第27天】回调函数是JavaScript中处理异步编程的常见模式,常用于事件驱动和I/O操作。它作为参数传递给其他函数,在特定条件满足或任务完成后被调用。例如,`asyncOperation`函数接受回调函数`handleResult`,模拟异步操作后,调用`handleResult`传递结果。这样,当异步任务完成时,`handleResult`负责处理结果。
13 1
|
9天前
|
存储 JavaScript 前端开发
JavaScript中的对象是数据结构,存储键值对,键为字符串,值可为任意类型,包括函数(作为方法)
【6月更文挑战第25天】JavaScript中的对象是数据结构,存储键值对,键为字符串,值可为任意类型,包括函数(作为方法)。
13 2
|
12天前
|
存储 JavaScript 前端开发
JavaScript中的数组是核心数据结构,用于存储和操作序列数据
【6月更文挑战第22天】JavaScript中的数组是核心数据结构,用于存储和操作序列数据。创建数组可以使用字面量`[]`或`new Array()`。访问元素通过索引,如`myArray[0]`,修改同样如此。常见方法包括:`push()`添加元素至末尾,`pop()`移除末尾元素,`shift()`移除首元素,`unshift()`添加到开头,`join()`连接为字符串,`slice()`提取子数组,`splice()`进行删除、替换,`indexOf()`查找元素位置,`sort()`排序数组。还有其他如`reverse()`、`concat()`等方法。
49 2
前后端数据交互,request.js文件添加拦截器的写法,数据请求失败后的固定写法
前后端数据交互,request.js文件添加拦截器的写法,数据请求失败后的固定写法
|
1天前
|
JavaScript API
前后端数据交互.js文件的axios的写法,想要往后端发送数据,页面注入API,await的意思是同步等待服务器数据,并返回,axios注入在其他页面,其他页面调用的时候,同步作用
前后端数据交互.js文件的axios的写法,想要往后端发送数据,页面注入API,await的意思是同步等待服务器数据,并返回,axios注入在其他页面,其他页面调用的时候,同步作用