【问题标题】:State of flag not getting reflected in HTML page标志状态未反映在 HTML 页面中
【发布时间】:2014-02-12 15:45:54
【问题描述】:

我有一个链接到 AngularJS 中的控制器的 HTML 页面。在控制器中,我有一个标志 showTree=true 。我正在使用 <h3>{{showTree}}</h3>

在我的 HTML 页面中显示此标志的状态

当我设置 showTree=false 时,它会反映在 HTML 页面中,但是当我将其更改回 showTree=true 时,更改不会反映在 HTML 页面中。

我使用

检查了标志的状态
 $scope.$watch('showTree',function(){
            alert("changed"+$scope.showTree);
            console.log($scope.showTree);
        });

结果显示该值正在发生变化。但它仍然没有反映在 HTML 页面中。

我尝试使用$scope.$apply();,但没有用。

有没有办法解决这个问题?

【问题讨论】:

  • 请用代码创建一个 JSFiddle。没有足够的信息来诊断问题。
  • 从哪里更改 showTree 的值?
  • @Jay 来自另一个 html 页面。您认为对两个不同的 html 页面使用相同的控制器可能会导致问题吗?
  • 那么,你有两个路由设置来使用同一个控制器?这就是我的理解吗?如果是这样,那我可以保证是问题所在。
  • 是的,如果您使用的是 ng-include,那么它可能会产生问题,因为它会创建新的范围。

标签: javascript html angularjs angularjs-scope


【解决方案1】:

我认为是scope 的问题。您可能正在使用创建新范围的 ng-include,因此当您更改 $scope.showTree 的值时,它会更改值,但它会在子范围中创建新的 showTree,并且您期望父范围中的更改。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    这对我有用。 I created a plunkr 它对我有用。你能让这个 plunkr 失败吗?

    【讨论】:

      【解决方案3】:

      尝试使用观察。你刚刚看了场,放了个日志。

      创建了一个 plunker。看看有没有帮助。

      http://plnkr.co/edit/DmQT0JD7FsTOupunLtuh?p=preview

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-14
        • 2022-10-24
        • 2021-11-16
        • 2021-09-18
        相关资源
        最近更新 更多