我试图在有两个文本字段的表单上加载json数据。TextFields显示正确的价格和数量从json。但是,问题是当用户更新价格和质量时,更新的价格和质量没有反映在控制器方法- $scope.total()中。这是我的密码
HTML文件
<div ng-repeat="row in myData">
<input type="text" ng-model="row.price">
<input type="text" ng-model="row.qty">
</div> JS文件
$http.get('http call’).success(function(data){
$scope. myData = data
})
$scope.row = {
price : 10.0,
qty : 2;
};
$scope.total = function() {
console.log($scope.row.price);
console.log($scope.row.qty);
}JSON -{“价格”:10.50,"qty":3}
不知道我在这里错过了什么?为什么更新的值没有反映在控制器中?
发布于 2015-01-05 18:55:02
您的$scope.total函数需要在某个地方调用,正如@pankajparkar所提到的,$scope.row不同于指令中的row (只属于ng重复的作用域)。
这样做:
<div ng-repeat="row in myData">
<input type="text" ng-model="row.price" ng-change="total()">
<input type="text" ng-model="row.qty" ng-change="total()">
</div> 联署材料:
$http.get('http call').success(function(data){
$scope.myData = data;
});
$scope.total = function() {
console.log($scope.myData[0].price * $scope.myData[0].qty);
};发布于 2015-01-05 19:09:53
由于您的数据是一个数组,所以循环遍历是为了获得所有对象的总数:
$scope.total = function() {
var sum = 0;
myData.forEach(function(obj){
sum += obj.qty * obj.price
});
return sum;
}当值发生变化时,您需要调用这个函数。
小提琴
在数组中只有一个元素时,函数total应该类似于@Joao答案:
$scope.total = function() {
return $scope.myData[0].price * $scope.myData[0].qty;
};小提琴
发布于 2015-01-05 19:36:51
首先,如果响应只是一个项,那么它不应该是一个数组。
它应该是单个JSON,如{"price":10.50,"qty":3}
HTML代码
<input type="text" ng-model="myData.price">
<input type="text" ng-model="myData.qty">
<button type="button" ng-click="updateTotal()">JS代码
$http.get('http call').success(function(data){
$scope.myData = data;
});
$scope.total = function(){
//now here you will get updated scope values
console.log($scope.myData.price * $scope.myData.qty);
}希望这对你有充分的帮助。
https://stackoverflow.com/questions/27785872
复制相似问题