Angularjs ng开关中的值未更新

Angularjs ng开关中的值未更新,angularjs,Angularjs,我正在使用ng开关更改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"

我正在使用ng开关更改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>
你能给我解释一下怎么了吗

谢谢

$scope.result=angular.isDefined(window.localStorage['result']);

AppCtrl中的代码只运行一次,将结果值设置为false,仅此而已。 你没有任何观察者。 你可以:

  • 手动添加观察者

    function getResultValue() {
       return angular.isDefined(window.localStorage['result'])
    }
    
    $scope.$watch(getResultValue, function(newValue) {
     $scope.result = newValue;
    });
    
  • 在视图中调用函数:

    //控制器代码:
    $scope.getResultValue=getResultValue//如前一示例所示

    // 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>
    
    //查看
    
与digest cycle集成的服务也可以完成这项工作
您可以在此处阅读有关观察者的信息:

更新
我做了一些误导性的假设。 要对变化做出反应,您需要将它们集成到角度摘要循环中。 我的例子只有在某些东西开始消化时才有效。ngClick指令、$interval服务或其他内容
此处的间隔示例:


我真的不明白为什么newValue被添加到watch函数中,而不是在控制器代码中使用,请您解释一下

控制器wll中的代码只运行一次。watcher中的代码将运行每个摘要。 (之后将在视图中计算角度表达式)

例如:
0初始状态:localStorage['result']未定义
1.应用程序启动,调用摘要,第一个ng swith分支
2.某些内容更改了localStorage['result']值,现在已定义该值
3.对某事的反应调用摘要
4.所有观察者都被称为

5.如果某个观察者更改$scope.result值,您将获得第二个ng开关

您忘记了“false”和“true”周围的引号。您是否更改过
$scope.result
的值,或者只是将某些内容放入本地存储?只是更改本地存储值我真的不明白为什么在watch函数中添加了newValue,而在控制器代码中没有使用,请您解释一下?谢谢
// 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>