我尝试动态创建$ scope变量和函数,并调用ng-click指令。
我的场景是动态调用ng-repeat& amp; NG-点击。
Json
{
"listnames": [
{ name: rock, age: 24, year: 1999},
{ name: rock1, age: 24, year: 1999},
{ name: rock2, age: 24, year: 1999},
{ name: rock3, age: 24, year: 1999}
]
}
在view.html文件中
<td ng-repeat="list in listnames.name track by $index" class="smallbox_{{$index}}" ng-class="{'showblock': isbox_{{$index}}, 'hideBlock': !isbox_{{$index}}}" ng-click="isshowhide{{$index}}_new()" >
即表示
<td ng-repeat="list in listnames.name track by $index" class="smallbox_0" ng-class="{'showblock': isbox_0, 'hideBlock': !isbox_0}" ng-click="isshowhide0_new()" >
<td ng-repeat="list in listnames.name track by $index" class="smallbox_1" ng-class="{'showblock': isbox_1, 'hideBlock': !isbox_1}" ng-click="isshowhide1_new()" >
所以..在......
在Controller.js文件中
$scope.isshowhide0_new = function(){
$scope.isbox_0 = !$scope.isbox_0;
}
$scope.isshowhide1_new = function(){
$scope.isbox_1 = !$scope.isbox_1;
}
但是,我需要创建动态调用函数和$ scope变量的解决方案。
类似于......
for(var i=0; i< 288; i++){
$scope.isshowhide[i]_new = function(){
$scope.isbox_[i] = !$scope.isbox_[i];
}
OR
$scope.isshowhide{{i}}_new = function(){
$scope.isbox_{{i}} = !$scope.isbox_{{i}};
}
Angular JS中是否有可能使用此类型的解决方案。
所以,我可以称之为动态功能&amp;使用$ index作为
的$ scope变量纳克单击=&#34; isshowhide0_new();&#34;
纳克单击=&#34; isshowhide1_new();&#34;
纳克单击=&#34; isshowhide2_new();&#34;
纳克单击=&#34; isshowhide3_new();&#34; ...
OR
ng-class =&#34; {&#39; showblock&#39;:isbox_0,&#39; hideBlock&#39;:!isbox_0}&#34;
ng-class =&#34; {&#39; showblock&#39;:isbox_1,&#39; hideBlock&#39;:!isbox_1}&#34;
ng-class =&#34; {&#39; showblock&#39;:isbox_2,&#39; hideBlock&#39;:!isbox_2}&#34;
我希望你明白我到底需要什么......
所以,请某人,你能给我解决方案并实现这种类型的功能。
我有一些代码实现用于测试目的。 http://jsfiddle.net/twc7Lbe3/
请修改此代码并告知我们。如果可能,也提供解决方案。
答案 0 :(得分:3)
你知道在javascript中:
obj.property === obj["property"]
所以如果你真的想,你可以:
<td ng-repeat="list in listnames.name track by $index" class="smallbox_{{$index}}" ng-class="{'showblock': isbox_{{$index}}, 'hideBlock': !isbox_{{$index}}}" ng-click="isshowhide_new($index)" >
然后:
$scope.isshowhide_new = function(i){
$scope['isbox_' + i ] = !$scope['isbox_' + i ];
}
答案 1 :(得分:1)
一种解决方案是使用数组来控制显示/隐藏块类:
<td ng-repeat="..." ng-click="isbox[$index]=!isbox[$index]" ng-class="{'showblock': isbox[$index], 'hideBlock': !isbox[$index]}"></td>
在控制器中用布尔值填充你的isbox
数组:
$scope.isbox = [];
for(var i=0; i< 288; i++){ // In case you want to initialize all values as false
$scope.isbox[i] = false;
}
不确定这是否是您正在寻找的内容,但此处您已更新fiddle