AngularJS函数更新json字符串值失败

AngularJS function fails update with json string value

本文关键字:失败 字符串 json 函数 更新 AngularJS      更新时间:2023-09-26

我已经用ng-repeat创建了下拉菜单,但是如果json是字符串,我的函数将失败。但如果是整数,它也可以正常工作。

这里有一个例子

正如你们所看到的,图表可以通过年份选择下拉菜单上传。我相信因为数据是整数,例如"year": 2011

我也有四分之一的下拉菜单。与"quarter": "1",这将无法更新,但是,如果我有"quarter": 2工作得很好。

<select class="YearSelector" ng-model="selectedyear" ng-change="sampleDropDown()">
      <option ng-repeat="year in filterOptions.stores |  unique: 'year'">
        {{ year.year }}</option>
    </select>
    Quarter:
    <select class="QuarterSelector" ng-model="$parent.quarter" ng-change="sampleDropDown()">
      <option ng-repeat="quarter in filterOptions.stores | unique: 'quarter'">
        {{ quarter.quarter }}</option>
    </select>

我的函数:

 $scope.sampleDropDown = function(){
myChart.data = getData(data, $scope.selectedyear, $scope.quarter);
myChart.draw(500);

}

看起来您的HTML标记导致选项值以前导回车结束。如果像下面这样添加console.log,就可以看到它:

function getData(data, year, quarter) {
  console.log("year value '" + year + "'") ;

在控制台中,您将看到:

"year value '
        2011'"

如果你把你的HTML选项标记改成一行,我认为你会做得很好,例如:

<option ng-repeat ...>{{ quarter.quarter }}</option>
你也可以使用Angular的ngOptions来代替option+ng-repeat组合。

我认为@charlietfl的意思是,你应该把字符串转换成数字。

 $scope.sampleDropDown = function(){
    myChart.data = getData(data,  parseInt($scope.selectedyear), parseInt($scope.quarter));
    myChart.draw(500);
  }

在我看来,这个错误似乎更多地与myChart有关。draw than Angular。