Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 控制器作用域中的Angularjs函数_Function_Angularjs_Controller_Scope - Fatal编程技术网

Function 控制器作用域中的Angularjs函数

Function 控制器作用域中的Angularjs函数,function,angularjs,controller,scope,Function,Angularjs,Controller,Scope,我有一件奇怪的事: 我的控制器工作正常,但在加载时调用getHash服务,而不是在索引html上调用saveit()函数: angular.module('myApp.controllers', []) .controller('MyCtrl', ['$scope','$http','getHash', function ($scope,$http, getHash) { $scope.keys = getHash.get(function(keys) { $scope

我有一件奇怪的事:

我的控制器工作正常,但在加载时调用getHash服务,而不是在索引html上调用
saveit()
函数:

angular.module('myApp.controllers', [])
.controller('MyCtrl', ['$scope','$http','getHash', function ($scope,$http, getHash) {

    $scope.keys = getHash.get(function(keys) {
        $scope.key = keys.key;
    });

    $scope.saveit = function () {

        $scope.formData = {
            'key' : $scope.key
        };

        console.log ($scope.formData);
        //Do Something with formData
   }   
}
此示例不起作用,
$scope.key
为空,但调用了
getHash
服务

angular.module('myApp.controllers', [])
.controller('MyCtrl', ['$scope','$http','getHash', function ($scope,$http, getHash) {

    $scope.saveit = function () {

        $scope.keys = getHash.get(function(keys) {
            $scope.key = keys.key;
        });

        $scope.formData = {
            'key' : $scope.key
        };

        console.log ($scope.formData);
        //Do Something with formData
   }   
}
有人能解释这种行为吗?如何在函数
saveit
中获取
$scope
? 或者将变量保存到
$scope
内部
保存它


谢谢,Patrick

在第一种情况下,
$scope.keys
在加载时执行,因为它调用的是看起来像服务的东西。而且,由于它从未从
saveit()
内部调用,因此在执行
saveit()
时,显然不会调用它。在第二种情况下,运行的是
$scope.keys
,但由于它的异步性质,程序将继续运行到
$scope.formData
,而不等待
getHash.get(函数(键)
完成执行。以下操作可能对您更有效:
$scope.keys=getHash.get(函数(键){$scope.key=keys.key;$scope.formData={'key':$scope.key};});
还有一个plunker会很有帮助。谢谢,我想我得到了异步的东西!我必须把剩下的代码放进getHash的回调函数中,它正在工作!可能是