我正在尝试允许用户在文本框中添加数量。我有产品阵列,每个产品都包含其属性。我的服务包含数组列表。
products = [{
id: 1,
name: 'X Product',
face: 'img/x_p.png',
available_size: 6,
color_available: 0,
sizes: ['10"', '20"', '30"'],
properties: [{size: '10"', mrp: '10$'},
{size: '20"', mrp: '15$'},
{size: '30"', mrp: '20$'}]
},
{
id: 2,
name: 'Y Product',
face: 'img/y_p.png',
available_size: 6,
color_available: 0,
sizes: ['10"', '20"', '30"'],
properties: [{size: '10"', mrp: '10$'},
{size: '20"', mrp: '15$'},
{size: '30"', mrp: '20$'}]
}]
迭代产品数组。当用户点击产品时,它将显示产品展示页面。我在哪里显示产品的所有信息。对于属性,我显示的是一个表,用户可以在每个大小之后添加数量。
<div style="margin-bottom: 20px;">
<h4>
Product Detail
</h4>
<table>
<tbody>
<tr class="tableHeader">
<td>Size</td>
<td>MRP</td>
<td>Quantity</td>
</tr>
<tr ng-repeat="(key, property) in product.properties">
<td>{{ property['size'] }}</td>
<td>{{ property['mrp'] }}</td>
<td>
<input type="number" placeholder="QTY" ng-model="qty">
</td>
<td>
<a href="javascript:;" class="button" ng-click="addToCart(property['size'], qty)">
Add
</a>
</td>
</tr>
</tbody>
</table>
</div>
问题:因此根据此表,每行包含一个名为add的按钮。因此,添加数量用户点击添加按钮后,他们将允许在购物车中添加项目。这里我在 addToCart 函数中获得了大小,但得到了未定义的数量,因为它应该是一个具有各自大小的数组。虽然我的体型很大。但我不知道该怎么做。
$scope.addToCart = function(size, qty) {
alert($scope.qty)
}
我需要帮助。
答案 0 :(得分:1)
var app = angular.module("MyApp", []);
app.controller("MyCtrl", function() {
this.addToCart = function(property, qty) {
property["qty"] = qty;
}
this.product = {
id: 1,
name: 'X Product',
face: 'img/x_p.png',
available_size: 6,
color_available: 0,
sizes: ['10"', '20"', '30"'],
properties: [{
size: '10"',
mrp: '10$'
}, {
size: '20"',
mrp: '15$'
}, {
size: '30"',
mrp: '20$'
}]
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div style="margin-bottom: 20px;" ng-app="MyApp">
<div ng-controller="MyCtrl as ctrl">
<h4>
Product Detail
</h4>
<table>
<tbody>
<tr class="tableHeader">
<td>Size</td>
<td>MRP</td>
<td>Quantity</td>
</tr>
<tr ng-repeat="(key, property) in ctrl.product.properties">
<td>{{ property['size'] }}</td>
<td>{{ property['mrp'] }}</td>
<td>
<input type="number" placeholder="QTY" ng-model="qty">
</td>
<td>
<a href="javascript:;" class="button" ng-click="ctrl.addToCart(property, qty)">
Add
</a>
</td>
</tr>
</tbody>
</table>
<hr/>
{{ctrl.product.properties}}
</div>
</div>
答案 1 :(得分:0)
我多次注意到文本框不会绑定到正常的范围变量,如
$ scope.qty 并使用ng-model =“qty”
将其绑定在视图中请尝试使用类似
的内容$ scope.qty = { 文字:'' }
并在视图中将其绑定为ng-model =“qty.text”
这将确保您的文本框实际上已绑定。
答案 2 :(得分:0)
解决此问题的简单方法:由$ scope.qty = 0;
初始化