在角JS控制器,我們把一張表,如下$範圍:爲什麼角JS的行爲有所不同?
$scope.processes = ['process-aa','process-bb', 'process-cc'];
$scope.selectedProcess=-1;
$scope.collapseProcess = function(index)
{
console.log('-----------------------in collapseProcess-------------- %s, %s', $scope.selectedProcess, index );
return $scope.selectedProcess != index;
};
$scope.switchCollapse = function(index)
{
$scope.selectedProcess = index;
}
頁面會列出所有這些過程,有一個div每一個過程裏面,我們做這個div撥動。在任何時候,只有一個div將被允許擴大。 HTML如下:
<li ng-repeat="process in processes" class="resultItem"
ng-click="switchCollapse($index)">
<div collapse="collapseProcess($index)" class="collapseBlock"> </div>
</li>
上述代碼完全按我的預期工作。當我選擇第一個進程時,內部DIV將被展開,如果我選擇第二個進程,則第一個進程的div將被摺疊,第二個進程的div將被展開。
不過,我不明白是爲什麼,如果我改變代碼是不工作:
<li ng-repeat="process in processes" class="resultItem"
ng-click="selectedProcess=$index">
<div collapse="toggleProcess($index)" class="collapseBlock"> </div>
</li>
如果我改變,因爲上面的代碼,然後當我點擊任何程序, DIV不會被擴大。函數collapseProcess中的輸出爲: ----------------------- in collapseProcess -------------- -1 0 -----------------------在collapseProcess -------------- -1 1 ------ -----------------在collapseProcess -------------- -1 2
selectedProcess將始終爲-1(即控制器中的初始值)。這很奇怪,我不明白爲什麼它是這樣的?
,更有趣,如果我更改HTML是:
<li ng-repeat="process in processes" class="resultItem"
ng-click="selectedProcess=$index">
<div collapse="$scope.selectedProcess != index" class="collapseBlock"> </div>
</li>
然後,如果我選擇一個特定的過程中,其內部的div將擴大,然而,DIV擴大爲原來的選擇的過程贏得」如果我選擇越來越多的流程,越來越多的DIV將會擴大。
由於我是角JS的新手,我不完全理解我的代碼塊之間的區別。任何人都可以幫忙嗎?提前致謝。
在上面的例子中試試這個「$ scope.selectedProcess!= $ index」,索引中缺少$ – Devjit