2016-07-21 16 views
0

我在我的angularjs-app中遇到了一些$scope變量。

我想要可視化具有多個'頻道'的'模塊',並且這些頻道可以隱藏/可見。我想通過雙擊該頻道來隱藏頻道 - 彈出窗口中的頻道。

角控制器片段:

$scope.dblclick = function(chid) { 
    $scope.chclicked = chid; 
    $scope.hidden = $scope.moduledata.channels[chid].hidden !== 0 ? true : false; 
    $scope.popupvisible = true; 
}; 

$scope.popupok = function() { 
    $scope.moduledata.channels[$scope.chclicked].hidden = $scope.hidden === true ? 1 : 0; 
    $scope.popupvisible = false; 
}; 

$scope.popupcancel = function() { 
    $scope.popupvisible = false; 
}; 

$scope.closePopup = function() { 
    $scope.popupvisible = false; 
}; 

之前示出的彈出我設置(I嘗試)的當前值'hidden'channel-id具有對它們的訪問關閉彈出窗口時。

彈出框中的複選框有ng-model="hidden"集。

現在的問題是,moduledata中的隱藏值不會更新/更改,並且$scope.hidden始終將彈出框中的最後一個值保留 - 對於所有通道。

$scope.chclicked雖然工作正常。

我做了一個Plunk來想象我的問題。

回答

1

請看你的the following Plunker

ng-include創建了一個新的作用域,這就是爲什麼您不能在彈出模板中的ng-model中使用hidden的原因。

您需要:

ng-model="moduledata.channels[chclicked].hidden" 

編輯1個

popup對象被創建存儲與彈出包括hidden變量的所有信息。

$scope.popup = { 
    visible: false, 
    url: 'channeleditpopup.html', 
    hidden: false 
}; 

接下來,在彈出的模板:

ng-model="popup.hidden" 

popupok功能:

$scope.moduledata.channels[$scope.chclicked].hidden = $scope.popup.hidden ? 1 : 0; 

dblclick功能:

$scope.popup.hidden = false; 
+1

@Appeiron它在說[Angular JS docum (https://docs.angularjs.org/api/ng/directive/ngInclude)該指令創建新的作用域,並在優先級400執行。 –

+0

好的,這將工作。但現在它立即隱藏/取消隱藏我的頻道。我只想在點擊「ok」時應用更改 – Draz

+0

@Draz我更新了Plunker。請看看它。 –