如何完成此AngularJS任务?

时间:2015-07-24 20:21:31

标签: angularjs

我将我正在使用的代码放在this Plunker中。

var arFloorStatus=['disabled','',''];
var spFloorStatus=['','','disabled'];

这两个数组平行于:

var buildingFloors=['GR','01','02'];

显示将使用哪个楼层。

此数组包含所有可能的楼层:

var floors =[{
    name:"Ground Floor",
    initial:"GR",
},{
    name:"1st Floor",
    initial:"01",
},{
    name:"2nd Floor",
    initial:"02",
},{
    name:"3rd Floor",
    initial:"03",
}];

for循环搜索buildingFloorsfloors以创建两个对象:

for(i=0;i<buildingFloors.length;i++){
  for(c=0;c<floors.length;c++){
    if(floors[c].initial == buildingFloors[i]){
        $scope.arFiles.push({
          floor:floors[i].name, initial:floors[i].initial, status:arFloorStatus[c]
        });
        $scope.spFiles.push({
          floor:floors[i].name, initial:floors[i].initial, status:spFloorStatus[c]
        });
    }
  }
}

arFiles中,底层(GR)被“禁用”,而在spFiles中,二楼(02)被“禁用”。 我想在其中添加一个按钮来更改正在使用的对象。现在,spFiles使用ng-repeat显示:

<tr ng-repeat = "x in spFiles">
    <th scope="row">{{x.floor}}</th>
    <td>AR{{x.initial}}.pdf {{x.status}} {{x.labelname}}</td>
    <td>AR{{x.initial}}.dwf {{x.status}} {{x.labelname2}}</td>
    <td>AR{{x.initial}}.dwg {{x.status}} {{x.labelname3}}</td>
</tr>

我的第一个想法是克隆对象,而不是包含spFiles的ng-repeat,它可能包含一个通用名称,它是要设置使用的任何对象的克隆,但克隆对象似乎过于复杂为了我的任务。我希望有更多的“角度方式”来完成我的任务,但我不确定如何去做。

遵循:

$scope.switchObj = function(newObj){
    if(newObj == "ar"){
        //somehow switch the object being used in the ng-repeat.
    }
}

1 个答案:

答案 0 :(得分:1)

你是什么意思&#34;克隆&#34; ?

这应该有效:

<tr ng-repeat = "x in files">
    <th scope="row">{{x.floor}}</th>
    <td>AR{{x.initial}}.pdf {{x.status}} {{x.labelname}}</td>
    <td>AR{{x.initial}}.dwf {{x.status}} {{x.labelname2}}</td>
    <td>AR{{x.initial}}.dwg {{x.status}} {{x.labelname3}}</td>
</tr>

并影响您要在files变量

中显示的文件
$scope.switchObj = function(newObj){
    if(newObj == "ar"){
        $scope.files = newObj;
    }
}

请参阅以下工作插件:{{3}}