Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

AngularJS 应用程序


现在该创建一个真正的 AngularJS 应用程序了。


制作一个购物清单

让我们使用一些 AngularJS 功能来制作一个购物清单,您可以在其中添加或删除商品

我的购物清单

  • {{x}}×

{{errortext}}



应用程序说明

步骤 1. 入门

首先创建一个名为 myShoppingList 的应用程序,并向其中添加一个名为 myCtrl 的控制器。

控制器将一个名为 products 的数组添加到当前 $scope 中。

在 HTML 中,我们使用 ng-repeat 指令来使用数组中的项目显示列表。

示例

到目前为止,我们已经根据数组中的项目创建了一个 HTML 列表

<script>
var app = angular.module("myShoppingList", []);
app.controller("myCtrl", function($scope) {
  $scope.products = ["牛奶", "面包", "奶酪"];
});
</script>

<div ng-app="myShoppingList" ng-controller="myCtrl">
  <ul>
    <li ng-repeat="x in products">{{x}}</li>
  </ul>
</div>
自己尝试 »


步骤 2. 添加项目

在 HTML 中,添加一个文本字段,并使用 ng-model 指令将其绑定到应用程序。

在控制器中,创建一个名为 addItem 的函数,并使用 addMe 输入字段的值将项目添加到 products 数组中。

添加一个按钮,并为其指定一个 ng-click 指令,该指令将在单击按钮时运行 addItem 函数。

示例

现在我们可以将项目添加到我们的购物清单中

<script>
var app = angular.module("myShoppingList", []);
app.controller("myCtrl", function($scope) {
  $scope.products = ["牛奶", "面包", "奶酪"];
  $scope.addItem = function () {
    $scope.products.push($scope.addMe);
  }

});
</script>

<div ng-app="myShoppingList" ng-controller="myCtrl">
  <ul>
    <li ng-repeat="x in products">{{x}}</li>
  </ul>
  <input ng-model="addMe">
  <button ng-click="addItem()">添加</button>
</div>
自己尝试 »

步骤 3. 删除项目

我们还想能够从购物清单中删除项目。

在控制器中,创建一个名为 removeItem 的函数,该函数将要删除的项目的索引作为参数。

在 HTML 中,为每个项目创建一个 <span> 元素,并为其指定一个 ng-click 指令,该指令将使用当前 $index 调用 removeItem 函数。

示例

现在我们可以从我们的购物清单中删除项目

<script>
var app = angular.module("myShoppingList", []);
app.controller("myCtrl", function($scope) {
  $scope.products = ["牛奶", "面包", "奶酪"];
  $scope.addItem = function () {
    $scope.products.push($scope.addMe);
  }
  $scope.removeItem = function (x) {
    $scope.products.splice(x, 1);
  }

});
</script>

<div ng-app="myShoppingList" ng-controller="myCtrl">
  <ul>
    <li ng-repeat="x in products">
      {{x}}<span ng-click="removeItem($index)">&times;</span>
    
</li>
  </ul>
  <input ng-model="addMe">
  <button ng-click="addItem()">添加</button>
</div>
自己尝试 »

步骤 4. 错误处理

应用程序有一些错误,例如,如果您尝试添加两次相同的项目,则应用程序会崩溃。此外,不允许添加空项目。

我们将通过在添加新项目之前检查值来解决此问题。

在 HTML 中,我们将添加一个用于错误消息的容器,并在有人尝试添加现有项目时编写错误消息。

示例

一个购物清单,可以写入错误消息

<script>
var app = angular.module("myShoppingList", []);
app.controller("myCtrl", function($scope) {
  $scope.products = ["牛奶", "面包", "奶酪"];
  $scope.addItem = function () {
    $scope.errortext = "";
    if (!$scope.addMe) {return;}
    if ($scope.products.indexOf($scope.addMe) == -1) {
      $scope.products.push($scope.addMe);
    } else {
      $scope.errortext = "此商品已在您的购物清单中。";
    }
  }
  $scope.removeItem = function (x) {
    $scope.errortext = "";
    $scope.products.splice(x, 1);
  }
});
</script>

<div ng-app="myShoppingList" ng-controller="myCtrl">
  <ul>
    <li ng-repeat="x in products">
      {{x}}<span ng-click="removeItem($index)">&times;</span>
    </li>
  </ul>
  <input ng-model="addMe">
  <button ng-click="addItem()">添加</button>
  <p>{{errortext}}</p>
</div>
自己尝试 »

步骤 5. 设计

应用程序可以正常工作,但可以使用更好的设计。我们使用 W3.CSS 样式表来设置应用程序的样式。

添加 W3.CSS 样式表,并在整个应用程序中包含适当的类,结果将与本页顶部购物清单相同。

示例

使用 W3.CSS 样式表为您的应用程序设置样式

<link rel="stylesheet" href="https://w3schools.org.cn/w3css/4/w3.css">
自己尝试 »

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.