如何通过输入表单将对象数组添加到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>
但是如果我添加了新的项目到我的列表,然后我开始改变文本框的值,所以我也改变了列表中的值。有一个类似指针的东西。如果我发送字符串数组,不要这样做,但我不想连接到一个字符串。现在我已经连接到一个字符串,但我不想要它。
谢谢大家的回答
使用angular.copy()创建一个副本,然后将复制的对象push到array中。
看看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">
相关文章:
- 使用jQuery根据动态生成的html动态添加html
- 如何使用javascript选择字符串的部分,添加html标记或删除部分
- 单击按钮添加HTML表单
- 如何添加html<br>标记转换为javascript
- 动态添加 HTML 元素后创建 jQuery 事件
- 在具有特定ID的DIV中使用JavaScript动态添加HTML元素
- 在前面的输入元素之前添加html输入元素
- 程序添加html后点击不工作
- 使用appendchild或其他方法向ul添加html代码而不是纯文本
- 如何在JS函数中添加HTML代码
- Jquery从另一个页面添加HTML
- 如何在不添加html脚本标记的情况下使用google-maps-api-v3
- 正在尝试向jQuery对象添加HTML类属性
- 使用“添加用户”按钮添加HTML字段
- 在 JavaScript 中的 textNode 中添加 html
- jquery动态添加HTML字段遇到了神秘的问题
- AngularJS 如何动态添加 HTML 并绑定到控制器
- 使用 js 添加 HTML 元素
- 在 JavaScript 切换中添加 html / css
- 如何在 tinymce 的第一段中添加 html 链接