【发布时间】:2015-05-13 05:34:48
【问题描述】:
如何使用 angularjs 添加新的多个输入?
我尝试过但无法将 ng-repeat 与输入 ng-model 绑定。我希望将 selectedItems 的 ng-repeat 添加到<div class="item-text-wrap">,但除非初始化它,否则它不起作用。
如果我点击添加新产品按钮,新产品选择字段和新价格输入字段将如图所示。
这里是plunker。
这是我的html
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<script data-require="angular.js@*" data-semver="1.3.0-beta.5" src="https://code.angularjs.org/1.3.0-beta.5/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-controller="mycontroller">
<!-- <div class="item-text-wrap" ng-repeat="item in selectedItems"> -->
<div class="item-text-wrap">
<label class="item item-input item-select">
<span class="input-label">Product</span>
<select ng-model="item" ng-options="item as item.name for item in items" ng-change="toggleChange(item)" class="col col-100"><option style="display:none" value="">select an item</option></select>
</label>
<label class="item item-input">
<span class="input-label">Price</span>
<input type="number" ng-model="item.price" placeholder="Select an item" ng-disabled="!item" />
</label>
</div>
{{selectedItems}}
</body>
</html>
这是我的 script.js
var app = angular.module('myApp', []);
app.controller('mycontroller', function($scope) {
$scope.selectedItems = [];
$scope.items = [{'id':1,'name':'apple', 'price': 100},
{'id':2,'name':'orange', 'price':75},
{'id':3,'name':'lemon', 'price':50}]
$scope.toggleChange = function (item) {
$scope.selectedItems.splice($scope.selectedItems.indexOf(item), 1);
$scope.selectedItems.push(item);
};
});
【问题讨论】:
-
正确的 Plunker 链接
-
你能再解释一下,你想达到什么目的
-
我希望将项目添加到 selectedItems,意味着多个项目。但我无法将 selectedItems 与项目绑定。请检查 plunker。我更新了链接。
-
这意味着您希望基于 select 标记的 selected items 数组中有多个项目。我对吗?如果是这样,在调用
toggle change函数时注释掉splice函数行 -
我不能Alhuck,用户需要显示下一个输入字段。这只是演示。 item 对象中还有一些属性,例如输入日期,可能会有所不同。
标签: javascript angularjs