为什么在方法中分配的值未反映在UI中

时间:2018-07-25 16:37:52

标签: html angularjs

我在点击li数据时调用一个函数。我正在将li数据传递给该函数,并试图修改该数据,但是该数据没有被修改。请提出建议。这是笨蛋。
    https://next.plnkr.co/edit/ENExN1q40yY9dVFL?open=lib%2Fscript.js&deferRun=1&preview

  $scope.selectRow = function(folders) {
    console.log(folders);
    folders = 'apple';
    $http({
    method: "GET",
    url: "https://reqres.in/api/users?page=2",
    headers: {
        'Content-Type': 'application/json'
    }
    }).then(function(response) {
        folders = response.page;
    });
  }

2 个答案:

答案 0 :(得分:0)

要实现这一点,您需要更改$scope.folderList而不是folders

将功能更改为此:

$scope.selectRow = function(folders) {
    $http({
    method: "GET",
    url: "https://reqres.in/api/users?page=2",
    headers: {
        'Content-Type': 'application/json'
    }
    }).then(function(response) {

      var index = $scope.folderList.indexOf(folders);

      if (index >= 0 ) {
        $scope.folderList[index] = String(response.data.page)
      }
    });
  }

https://next.plnkr.co/edit/h3XKo5klP2F1qmAg?open=lib%2Fscript.js&deferRun=1

答案 1 :(得分:0)

文件夹是一个变量,仅存在于控制器的方法中,然后存在于HTML的ng-repeat指令中。它不存在,因此它基本上不是有效变量,并且超出范围。在ng-repeat指令中,您为列表中的项目分配了一个名称,因此可以将其命名为fuzzlebumps,并且仍然可以使用。

所以我的建议是:如果要在范围内正确保留变量,请在控制器中执行以下操作以对其进行初始化:

 $scope.nameOfVariable;

或者您的情况:

$scope.folders;

这将创建一个绑定到范围的变量。范围在JS中非常重要,因此Google会搜索基础知识。