我想创建一个页面,您可以在其中添加1到n个产品。
我和AngularJS一起工作了几个月,但我觉得这很难。
我为之解决的HTML代码是这样的:
https://plnkr.co/edit/2MYbkYeAf4lZSRIh2c8l?p=preview
这是整个模板:
<div class="container text-center">
<h1>Make a sale</h1>
<br>
<form>
<div class = "divedp">
<label for="idNumeroFactura" class="col-form-label" >Invoice number: </label>
<input name="inpNumeroFactura" id="idNumeroFactura" maxlength= "8" type="text" ng-model="numeroFactura" class= "form-control"/>
</div>
<h6 class="small">products</h6>
<div class = "divedp">
<label for="idProducto">Product: </label>
<select name="sltProducto" ng-options ="producto.nombreProducto for producto in productos"
ng-model="producto" class="form-control input-sm" id="idProducto">
<option value="">-Choose the product-</option>
</select>
<br>
<label for= "idCantidad" >Quantity: </label>
<select ng-model="cantidad" id="idCantidad" class="form-control input-sm">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<br>
<button ng-click="showDiv=true; agregarProducto()" class="btn btn-default" ng-hide="showDiv"> Add another product</button>
</div>
<div ng-show="showDiv"> Here should appear the new product</div>
<button ng-click="guardarVenta()" class="btn btn-primary" type="submit">Save sale</button>
</form>
<span >{{mensaje}}</span> <br>
</div>
这是我想重复的部分:
<div class = "divedp">
<label for="idProducto">Product: </label>
<select name="sltProducto" ng-options ="producto.nombreProducto for producto in productos"
ng-model="producto" class="form-control input-sm" id="idProducto">
<option value="">-Choose the product-</option>
</select>
<br>
<label for= "idCantidad" >Quantity: </label>
<select ng-model="cantidad" id="idCantidad" class="form-control input-sm">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<br>
<button ng-click="showDiv=true; agregarProducto()" class="btn btn-default" ng-hide="showDiv"> Add another product</button>
</div>
所以当我点击添加另一个产品按钮时,所有div代码部分应该在第一个div下方重复。这样,用户就可以用他想要的数量选择他想要的所有产品。
我正在考虑创建一个模板,但这已经是一个模板......我使用ui-router来做路由器部分,但我从未在模板中重复过模板,而且我从未使用过模板模板里面的模板。
此外,这种方法让我有些疑惑:
感谢阅读。
答案 0 :(得分:1)
由于您没有显示任何控制器,我只能提供解决方案的抽象概念。无论如何这里都是。
<强>重复强>
使用ngRepeat
完成数据收集的简单循环。在您的控制器中,您需要操纵集合,而角度将为您传播更改
<div ng-repeat="productBlock in productBlocks track by productBlock.id">
<!-- your repeated code here -->
<button ng-click="removeProductBlock(productBlock.id)"> remove </button>
</div>
<button ng-click="addProductBlock()"> add </button>
禁止用户选择重复的产品
您可以再次通过操纵控制器中的集合来实现此目的。这一次,该系列将保留仍可供选择的产品。 Angular将帮助您使用ngOptions
指令
<select
ng-options="product as product.label for product in productsAvailable track by product.id"
ng-change="selectProduct(product.id)">
</select>
selectProduct
方法将负责从productsAvailable
集合中删除产品。
请记住,它还必须&#34;放回&#34;任何未在更新时使用的产品。