2013-02-27 21 views
3

我觀察到當我包含ng-include指令的模板時,ng-showng-hide似乎不起作用。ng-show/ng-hide停止工作,如果放在ng -include包含的文件中

注意:在angularjs 1.0.4測試和1.0.5


這個作品

template.html

<table ng-init="changeable = null"> 
    <tr ng-repeat="(key, item) in items" ng-click="changeable = key"> 
    <td> 
     <span ng-show="changeable != key">{{item.name}}</span> 
     <input ng-hide="changeable != key" ng-model="item.name"> 
    </td> 
    <td> 
     <button ng-click="changeable = null">OK</button> 
    </td> 
    </tr> 
</table> 

這不起作用

template.html

<div ng-include src="'/changeable_table.html'"></div> 

changeable_table.html

<table ng-init="changeable = null"> 
    <tr ng-repeat="(key, item) in items" ng-click="changeable = key"> 
    <td> 
     <span ng-show="changeable != key">{{item.name}}</span> 
     <input ng-hide="changeable != key" ng-model="item.name"> 
    </td> 
    <td> 
     <button ng-click="changeable = null">OK</button> 
    </td> 
    </tr> 
</table> 

更新

過了一會[email protected]給我一個鏈接,解釋真的很好,爲什麼是維基需要這個名字CE,這是The Nuances of Scope Prototypal Inheritance

+0

但[不工作(http://embed.plnkr.co/tgF3U4qiElv7Kh30dum8)。順便說一句,注意那些嵌套ng點擊綁定。 – Stewie 2013-02-27 00:38:17

+0

ng-click很好,但是當點擊時,輸入不顯示。我在Windows 8 64位上使用Chrome 24.0.1312.57,即使您的示例也不會運行 – rkmax 2013-02-27 00:44:20

回答

6

你有2個問題有:

  1. 不要忘了,ng-repeat會爲每個條目,你這樣做的方式一個新的範圍內,changeable屬性不會被共享在所有這些範圍內。正確(例如)定義你的模型:

    <table ng-init="model = {}; model.changeable = null"> 
    

    ,並切換到model.changeablechangeable所有引用。

  2. tr上的ng-click將覆蓋按鈕上的ng-click(當您單擊該按鈕時,還可以單擊tr)。移動TR ng-click到跨度:

    <span ng-show="model.changeable != key" ng-click="model.changeable = key">{{item.name}}</span> 
    

plunker:http://plnkr.co/edit/TTAUsPhqSq2rkF47EtNL?p=preview

+0

您的回覆類似於我在angularjs存儲庫的問題部分獲得的回覆,但更好地解釋了+1。 PS:不用擔心按鈕,這只是爲了完成功能的例子 – rkmax 2013-02-27 02:58:01

相關問題