监视函数从服务返回不起作用,但作用域函数起作用
Watching function return from service not working but a scope function works
我的服务函数有问题。
如果我通过服务在视图中使用函数,那么如果返回值发生更改,它就不会更新。
但如果我使用一个在控制器中声明的函数,它就可以工作。
为什么
第一个例子,不工作,服务功能:
https://jsfiddle.net/xrzr457v/
var myApp = angular.module('myApp', []),
test = null;
myApp.factory('myService', function() {
return {
checkLoggedIn: function()
{
return test == null;
}
}
});
function MyCtrl($scope, myService)
{
$scope.name = 'Superhero';
$scope.service = myService;
$scope.LoginTxt = 'Login';
$scope.login = function()
{
$scope.LoginTxt = 'You should be logged in and the texts should be moved!';
test = true;
};
}
第二个例子,工作,控制器功能:
https://jsfiddle.net/t3nyejLy/
var myApp = angular.module('myApp', []),
test = null;
function MyCtrl($scope)
{
$scope.name = 'Superhero';
$scope.checkLoggedIn = function()
{
return test == null;
};
$scope.LoginTxt = 'Login';
$scope.login = function()
{
$scope.LoginTxt = 'You should be logged out and the texts should be moved!';
test = true;
};
}
谢谢你的想法
如果我删除变量前面的$,它就会起作用。
https://jsfiddle.net/xrzr457v/2/
var myApp = angular.module('myApp', []),
test = null;
myApp.factory('myService', function() {
return {
checkLoggedIn: function()
{
return test == null;
}
}
});
function MyCtrl($scope, myService)
{
$scope.name = 'Superhero';
$scope.service = myService;
$scope.LoginTxt = 'Login';
$scope.login = function()
{
$scope.LoginTxt = 'You should be logged in and the texts should be moved!';
test = true;
};
}
和模板
<div ng-controller="MyCtrl">
Hello, {{name}}!<br />
You're logged
<p ng-show="service.checkLoggedIn()">in</p>
<p ng-hide="service.checkLoggedIn()">out</p>
.
<br /><br />
<button ng-click="login()" ng-show="service.checkLoggedIn()">{{ LoginTxt }}</button>
</div>
学习AngularJS语法非常有趣:)
感谢Kevin B.
相关文章:
- Javascript中的内部函数作用域
- 将对象作为参数传递时的 Javascript 函数作用域
- Javascript 函数作用域概念
- 函数作用域 if 语句
- Javascript 函数作用域
- 评估和函数作用域
- 有没有办法迭代函数作用域内的公共方法
- Javascript 函数作用域差异
- 嵌套函数作用域变量
- JavaScript 对象中的变量和函数作用域
- Javascript 函数作用域和查找父对象的属性
- 脚本标记之间的 JavaScript 函数作用域
- 纯JavaScript onclick在分配函数作用域结束后变为未定义
- 具有闭包函数作用域的意外行为
- KnockoutJS:函数作用域错误
- 具有所选函数作用域的变量
- 使用 JSON 对 js 对象进行分级/解析时,返回的方法中的函数作用域会丢失
- Angular的watch - update变量在函数作用域之外
- 将变量传递到函数作用域
- 为什么条件块中的函数声明在Chrome中提升到函数作用域,而在Firefox中不是?