簡體   English   中英

如何通過輸入表單將對象數組添加到html列表?

[英]How can I add array of object to html list by input form?

我想在我的頁面中創建動態列表。 用戶可以從表單中添加項目到列表。 像這樣的東西:

w3school例子

但我想添加更多輸入並將一個對象發送到角度函數。 像這樣的東西:

<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<link rel="stylesheet" href="http://www.w3schools.com/lib/w3.css">
<body>

<script>
var app = angular.module("myShoppingList", []);
app.controller("myCtrl", function($scope) {
    $scope.products = [{food: "Milk", price: "1$"}, {food : "Bread", price: "1$"}, {food : "Cheese", price: "1$"}];
    $scope.addItem = function () {
        $scope.errortext = "";
        if (!$scope.addMe) {return;}
        if ($scope.products.indexOf($scope.addMe) == -1) {
            $scope.products.push($scope.addMe);
        } else {
            $scope.errortext = "The item is already in your shopping list.";
        }
    }
    $scope.removeItem = function (x) {
        $scope.errortext = "";
        $scope.products.splice(x, 1);
    }
});
</script>

<div ng-app="myShoppingList" ng-cloak ng-controller="myCtrl" class="w3-card-2 w3-margin" style="max-width:400px;">
  <header class="w3-container w3-light-grey w3-padding-16">
    <h3>My Shopping List</h3>
  </header>

  <ul class="w3-ul">
    <li ng-repeat="x in products" class="w3-padding-16">{{x.food}} : {{x.price}}<span ng-click="removeItem($index)" style="cursor:pointer;" class="w3-right w3-margin-right">×</span></li>
  </ul>

  <div class="w3-container w3-light-grey w3-padding-16">
    <div class="w3-row w3-margin-top">
      <div class="w3-col s10">
        <input placeholder="Add shopping items here" ng-model="addMe.food" class="w3-input w3-border w3-padding">
        <input placeholder="Add shopping items here" ng-model="addMe.price" class="w3-input w3-border w3-padding">
      </div>
      <div class="w3-col s2">
        <button ng-click="addItem()" class="w3-btn w3-padding w3-green">Add</button>
      </div>
    </div>
    <p class="w3-padding-left w3-text-red">{{errortext}}</p>
  </div>
</div>

</body>
</html>

但是如果我將新項目添加到我的列表中然后我開始在文本框中更改值,那么也會更改我的列表中的值。 有像指針這樣的東西。 如果我發送字符串數組然后不這樣做但我不想連接到一個字符串。 現在我連接到一個字符串,但我不想要它。

謝謝你的所有答案。

查看ngModelOptions以控制模型的更新方式: https ://docs.angularjs.org/api/ng/directive/ngModelOptions

嘗試這個:

<input placeholder="Add shopping items here"
ng-model="addMe.price"
ng-model-options="{ updateOn: 'blur' }"
class="w3-input w3-border w3-padding">

只是搞亂JavaScript事件將觸發更新。

使用angular.copy()創建一個副本,然后將該復制的對象推送到數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM