4

这太奇怪了,我不知道为什么这个简单的场景不起作用。在使用 jQuery 和 Backbone 之后,我对 Angular 还是很陌生。

这是代码的基本结构......

<div class="span10" ng-controller="ClientCtrl" ng-hide="addClient">
  <button ng-click="addClient = true" class="btn btn-primary">
    Add new Client
  </button>
</div>
<div class="span10" ng-controller="ClientCtrl" ng-show="addClient">
  <div ng-include src="'views/partials/client.html'"></div>
</div>

预期的行为是单击“添加新客户端”按钮将显示第二个 div。实际行为是第一个 div 被隐藏(应该如此),但第二个 div 保持隐藏。控制器中没有控制行为。

我已经尝试过使用范围函数,在控制器的属性中设置初始值以及许多其他事情,但没有任何运气。我究竟做错了什么?我已经检查以确保它们在同一范围内,并且“似乎”不是问题。感谢您的帮助,因为这让我发疯了。

4

1 回答 1

12

在这种情况下,AngularJS 创建了两个单独的控制器,因为您已经使用 ng-controller 属性映射了两个控制器。一个控制器内的范围不影响第二个控制器的范围。

你必须这样做:

<div ng-controller="ClientCtrl">
  <div class="span10" ng-hide="addClient">
    <button ng-click="addClient = true" class="btn btn-primary">
      Add new Client
    </button>
  </div>
  <div class="span10" ng-show="addClient">
    <div ng-include src="'views/partials/client.html'"></div>
  </div>
</div>
于 2013-06-28T14:53:34.243 回答