调用初始化函数时无法识别 $scope 变量
$scope variable isn't recognized when calling initialization function
我有以下代码,我想在其中接收当前用户的所有文本并在页面加载时在屏幕上显示它们:
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
。
此外,我尝试将指令 ng-init="findByUser()"
放入我的 html 代码中,但我再次收到相同的错误,指出无法识别 $scope.account.login
。
最后我让它与 $watch
函数一起工作,但我不明白为什么前两种方法不起作用,因为它们更容易理解,我更喜欢使用它们而不是 $watch
.
之所以有效,是因为您的 $watch
确保 $scope.account
在 运行 $scope.findByUser
之前定义。
在没有手表的示例中,findByUser
立即执行,并尝试使用未定义的 $scope.account
的 login
属性。
如果拥有用户帐户是 findByUser
的先决条件,并且您认为没有任何东西可以立即调用它,那么在您的 then
中调用 findByUser
可能更有意义块,这将避免需要 $watch
.
我有以下代码,我想在其中接收当前用户的所有文本并在页面加载时在屏幕上显示它们:
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
。
此外,我尝试将指令 ng-init="findByUser()"
放入我的 html 代码中,但我再次收到相同的错误,指出无法识别 $scope.account.login
。
最后我让它与 $watch
函数一起工作,但我不明白为什么前两种方法不起作用,因为它们更容易理解,我更喜欢使用它们而不是 $watch
.
之所以有效,是因为您的 $watch
确保 $scope.account
在 运行 $scope.findByUser
之前定义。
在没有手表的示例中,findByUser
立即执行,并尝试使用未定义的 $scope.account
的 login
属性。
如果拥有用户帐户是 findByUser
的先决条件,并且您认为没有任何东西可以立即调用它,那么在您的 then
中调用 findByUser
可能更有意义块,这将避免需要 $watch
.