在角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