2015-04-16 103 views
0

我一直在努力與ng-hide問題結合使用ui路由器。簡單的應用。 Index.html通過「筆記」路徑顯示一些數據,您點擊「詳細信息」,然後轉到子路徑「notes.note」查看其他記錄下面的詳細信息。 「詳細」html有一個「保存」&「取消」按鈕。AngularJS與ui路由器ng-hide初始工作後不工作

現在有一個「新添加」按鈕,當你不與屬性NG隱藏=「HideAddNew」查看細節。 「HideAddNew」是控制器中的$ scope變量。當我點擊一排「細節」我有這個NG點擊=「toggleAddNew()」的鏈接,後者又調用這個

$scope.toggleAddNew= function() 
    { 
     $scope.HideAddNew=($scope.HideAddNew ? false : true); 
    } 

完美的作品,我的詳細節目和我的「添加新的「按鈕消失了。現在,當我點擊「取消」就關火細節NG點擊=「hideData()」它調用函數:

$scope.hideData=function() 
    { 
     $scope.toggleAddNew(); 
     $state.go('notes'); 
    } 

現在我的「新添加」已經消失,即使該變量設置爲false,即不要隱藏。我試過$ timeout在那個「hideData」函數中並且在「toggleAddNew」函數中。我試過把「$ scope.toggleAddNew();」之後「$ state.go('notes');」。我不想訴諸手動添加和刪除類。 AngularJS版本:v1.3.15,UI路由器版本:v0.2.13感謝名單全部:)

編輯 將在下面工作的託尼?

<button ng-if="HideAddNew" ng-click="SelectRoute('notenew')" class="btn btn-primary"> 
<span class="glyphicon glyphicon-plus -glyphicon-align-left"></span>Add New</button> 
+0

也許你可以在模板中,而不是用'NG-之開關你現在在控制器中有'$ scope.HideAddNew'嗎?或者,您可以嘗試在'hideData'函數中添加'$ scope.HideAddNew = false;'。 –

+0

我試着添加「$ scope.HideAddNew = false;」到「hideData」函數中,但這不起作用。我還沒有嘗試ng-switch tho ... – jjay225

+0

很難調試,而無需看到它的行動。聽起來像'ng-switch'對你的情況會更優雅。 https://docs.angularjs.org/api/ng/directive/ngSwitch –

回答

1

也許你可以簡化和使用ng-switch來代替。

事情是這樣的:

<ul ng-switch="expression"> 
    <li ng-switch-when="firstThing">my first thing</li> 
    <li ng-switch-when="secondThing">my second thing</li> 
    <li ng-switch-default>default</li> 
</ul> 

或者,也許你可以使用ng-ifng-show代替ng-hide,如:

<p ng-if="HideAddNew">it's here!</p> 
<p ng-if="!HideAddNew">it's not here.</p> 

編輯

如果我明白你的」重試,正好是,我會用ng-showng-click

控制器:

$scope.addNew = false; 

查看:

<button ng-show="!addNew" ng-click="addNew = true">Add New</button> 

<button ng-show="addNew" ng-click="save()">Save</button> 
<button ng-show="addNew" ng-click="addNew = false">Cancel</button> 

Example

+0

Thanx Tony。我需要類似上面的東西。我編輯了我的答案。請檢查。 – jjay225

+0

@ jjay225更新了我的答案,希望對你有所幫助:) –

+0

@ jjay225有什麼用? –