Function 控制器作用域中的Angularjs函数
我有一件奇怪的事: 我的控制器工作正常,但在加载时调用getHash服务,而不是在索引html上调用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
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的回调函数中,它正在工作!可能是