【问题标题】:Function can't see change in array函数看不到数组的变化
【发布时间】:2015-03-25 20:26:50
【问题描述】:

我有这两个功能

功能 1

    $scope.selected = [];
    $scope.selected.project = ['name:test, id:1'];
    $scope.selectedFs = function($item, $model) {
            $scope.selected.project = [$model];
        console.log($scope.selected.project[0]);
       }
    };

功能2

$scope.create = function() {
        var sign = new Sign ({
            sig: document.getElementById('canvas').toDataURL(),
            projectId:  $scope.proid,
            project: $scope.selected.project[0],
            timesheetId:  $scope.timesheetsId
        });
        console.log($scope.selected.project[0]);

        sign.$save(function(response) {

         }, function(errorResponse) {
            $scope.error = errorResponse.data.message;
        });
    };
}
]);

当我调用函数 1 时,我可以在控制台中看到 selected.project 的变化,但是当我之后使用函数 2 时,它只使用 ['name:test, id:1']

测试

selectedFs('1','1') ->
CONSOLE = [1] ->
create() ->
CONSOLE = ['name:test, id:1']

为什么函数 2 没有新值?

【问题讨论】:

  • 您的 $scope.selected.project 未定义。你在哪里设置的?
  • @Tom console.log($scope.selected.project) 给出 undefind 和 console.log($scope.selected.project) 给出相同的 typeError
  • 对不起,我已经编辑了我的评论!见上文。
  • @Tom 刚刚编辑了我的问题

标签: javascript angularjs function angularjs-scope mean


【解决方案1】:

您的第一个函数包含这一行:

$scope.selected.project = [$model];

因此,如果您将 $model 设置为 1(您在上面的行中执行此操作),它当然会返回 [1]。

在您的第二个函数中,我在任何分配的左侧都看不到 $scope.selected.project,所以它根本没有分配 [1] 的值。

【讨论】:

  • 那么我如何正确地将值分配给 selectedFs() 中的 selected.project
  • $scope.select.project = [1]?我真的没有足够的信息来知道你想从哪里获得它的价值 - 这个函数是从控制器中获取的,其中包含更多信息吗?
  • 它是一个控制器,在我看来,我首先使用 input + button() 运行函数 selectFs ,然后在我运行 create () 后也使用一个按钮所以不应该 create 获取输入,在我首先调用该函数之后。
  • 如果您仍然坚持这一点,向我展示一些代码可能会更容易。否则,我希望你已经整理好了 :)
猜你喜欢
  • 2021-03-30
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 2019-02-16
相关资源
最近更新 更多