首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angularjs从json输入文本值

Angularjs从json输入文本值
EN

Stack Overflow用户
提问于 2015-01-05 18:47:47
回答 4查看 4.2K关注 0票数 0

我试图在有两个文本字段的表单上加载json数据。TextFields显示正确的价格和数量从json。但是,问题是当用户更新价格和质量时,更新的价格和质量没有反映在控制器方法- $scope.total()中。这是我的密码

HTML文件

代码语言:javascript
运行
复制
<div ng-repeat="row in myData">
<input type="text" ng-model="row.price"> 
<input type="text" ng-model="row.qty"> 
</div>  

JS文件

代码语言:javascript
运行
复制
$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}

不知道我在这里错过了什么?为什么更新的值没有反映在控制器中?

EN

回答 4

Stack Overflow用户

发布于 2015-01-05 18:55:02

您的$scope.total函数需要在某个地方调用,正如@pankajparkar所提到的,$scope.row不同于指令中的row (只属于ng重复的作用域)。

这样做:

代码语言:javascript
运行
复制
<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> 

联署材料:

代码语言:javascript
运行
复制
$http.get('http call').success(function(data){
    $scope.myData = data;
});

$scope.total = function() {
    console.log($scope.myData[0].price * $scope.myData[0].qty);
};
票数 0
EN

Stack Overflow用户

发布于 2015-01-05 19:09:53

由于您的数据是一个数组,所以循环遍历是为了获得所有对象的总数:

代码语言:javascript
运行
复制
$scope.total = function() {
    var sum = 0;
    myData.forEach(function(obj){
        sum += obj.qty * obj.price
    });

    return sum;
}

当值发生变化时,您需要调用这个函数。

小提琴

在数组中只有一个元素时,函数total应该类似于@Joao答案:

代码语言:javascript
运行
复制
$scope.total = function() {
    return $scope.myData[0].price * $scope.myData[0].qty;
};

小提琴

票数 0
EN

Stack Overflow用户

发布于 2015-01-05 19:36:51

首先,如果响应只是一个项,那么它不应该是一个数组。

它应该是单个JSON,如{"price":10.50,"qty":3}

HTML代码

代码语言:javascript
运行
复制
<input type="text" ng-model="myData.price"> 
<input type="text" ng-model="myData.qty"> 
<button type="button" ng-click="updateTotal()">

JS代码

代码语言:javascript
运行
复制
$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);
}

希望这对你有充分的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27785872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档