Angularjs 调用初始化函数时无法识别$scope变量
我有以下代码,我希望从当前用户那里接收所有文本,并在页面加载时在屏幕上显示它们:Angularjs 调用初始化函数时无法识别$scope变量,angularjs,angularjs-scope,angularjs-service,Angularjs,Angularjs Scope,Angularjs Service,我有以下代码,我希望从当前用户那里接收所有文本,并在页面加载时在屏幕上显示它们: angular.module('eddieApp') .controller('MainController', function ($scope, Principal, TextService) { $scope.texts = []; Principal.identity().then(function(account) { $scope.ac
angular.module('eddieApp')
.controller('MainController', function ($scope, Principal, TextService) {
$scope.texts = [];
Principal.identity().then(function(account) {
$scope.account = account;
$scope.isAuthenticated = Principal.isAuthenticated;
});
$scope.findByUser = function(){
TextService.findByUser($scope.account.login).success(function(data){
$scope.texts = data;
});
};
// receive all notes from current user
$scope.$watch(function(scope) { return scope.account; },
function() { $scope.findByUser(); });
});
问题是它能工作,但我不明白为什么这是唯一能让它工作的方法
我尝试调用函数$scope.findByUser,如下所示:
angular.module('eddieApp')
.controller('MainController', function ($scope, Principal, TextService) {
$scope.texts = [];
Principal.identity().then(function(account) {
$scope.account = account;
$scope.isAuthenticated = Principal.isAuthenticated;
});
$scope.findByUser = function(){
TextService.findByUser($scope.account.login).success(function(data){
$scope.texts = data;
});
};
$scope.findByUser();
});
但是我得到一个错误,说$scope.account.login无法识别
此外,我还试图在html代码中输入指令ng init=findByUser,但再次出现相同的错误,即$scope.account.login无法识别
最后,我使用$watch函数实现了它,但我不明白为什么前两个方法不起作用,因为它们更容易理解,我会优先使用它们而不是$watch。它起作用是因为您的$watch确保在运行$scope.findByUser之前定义了$scope.account
在没有手表的示例中,findByUser立即执行,并尝试使用未定义的$scope.account登录属性
如果拥有一个用户帐户是findByUser的先决条件,并且在您的视图中没有任何东西可以立即调用它,那么在您的then块中调用findByUser可能更有意义,这样可以避免使用$watch。我有预感这就是原因,现在从其他人那里听到我确信。谢谢@阿德尔很高兴听到这个消息。如果答案确实回答了你的问题,请随意接受。