我使用ng-switch来更改ui-sref的值,但似乎它没有工作,因为值没有更新。 初始值为false,然后保留它。
Html:
<div ng-switch on="result">
<div ng-switch-when=false ui-sref="gotest" class="gotest-button"></div>
<div ng-switch-when=true ui-sref="menu" class="gotest-button"></div>
</div>
AppCtrl:
$scope.result=angular.isDefined(window.localStorage['result']);
你能告诉我什么是错的吗?
由于
答案 0 :(得分:2)
AppCtrl中的$ scope.result = angular.isDefined(window.localStorage [ '结果']);
代码运行一次,将结果值设置为false,这就是全部。 你没有任何观察者。 你可以:
手动添加观察者
function getResultValue() {
return angular.isDefined(window.localStorage['result'])
}
$scope.$watch(getResultValue, function(newValue) {
$scope.result = newValue;
});
在您的视图中调用函数:
// controller code:
$scope.getResultValue = getResultValue // as in previous example
// view
<div ng-switch on="getResultValue()">
<div ng-switch-when=false ui-sref="gotest" class="gotest-button"></div>
<div ng-switch-when=true ui-sref="menu" class="gotest-button"></div>
</div>
与摘要周期集成的服务也可以完成这项工作。
你可以在这里阅读关于观察者的信息:
https://docs.angularjs.org/api/ng/type/$rootScope.Scope
更新
我做了一些误导性的假设。
要对变化作出反应,您需要将它们整合到角度消化循环中。
我的例子只有在某些东西开始消化时才有用。 ngClick指令,$ interval服务或其他。
间隔示例:http://jsfiddle.net/joshdmiller/hb7lu/
我真的不明白为什么在监视功能中添加newValue而不在控制器代码中使用,请解释一下
控制器中的代码运行一次。观察者中的代码将运行每个摘要。 (之后将在您的视图中评估角度表达式)
例如:
0.初始状态:localStorage ['result']未定义
1.应用程序启动,消化被调用,第一个ng-swith分支
2.某些东西改变了localStorage ['result']值,现在已经定义了
摘要称之为对某事的反应
所有观察者都被称为
5.如果某个观察者更改了$ scope.result值,则会得到第二个ng-switch