2013-06-28 110 views
4

这很奇怪,我不知道为什么这个简单的方案不起作用。在使用jQuery和Backbone后,对Angular来说,我还是相当新的。显示隐藏Div AngularJs

下面的代码的基本结构...

<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保持隐藏状态。控制器中没有控制行为。

我已经试过它与示波器功能,在控制器中的属性设置初始和许多其他的东西没有任何运气。我究竟做错了什么?我已经检查过,以确定它们在相同的范围内,并且看起来不是问题。感谢您的帮助,因为这让我疯狂。

+0

当你说“保持隐藏”你检查:

你必须做这样的事?尝试在第二个div中放置一些静态代码,看看'ng-include'是否是失败的,或者确实是'ng-show' ... – callmekatootie

+0

是的,nginclude很好。点击之前:http://d.pr/i/VIye和点击后:http://d.pr/i/rSEP – Brandon

回答

12

AngularJS在这种情况下创建两个单独的控制器,因为您已经使用ng-controller属性映射了两个控制器。一个控制器内的范围不影响第二个范围。如果`NG-include`不工作或做相应的亲`div`实际上仍然隐藏

<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> 
+0

这就是答案!我应该意识到这一点,但从来没有尝试过。 SO允许时将接受答案。哦,谢谢你。 – Brandon

+0

很高兴帮助:) –

+0

是的。控制器不是作为Angular的共享实例(单例)注入的(尽管服务是!) – blaster