正如您在本问题中提供的代码中所见,我尝试循环对象的属性。所有属性都是空的对象!我还有另一个对象,其中存储了一些其他的对象(ngResource Stuff,对于这个问题不重要)。通过对象循环访问属性名称
在这里你可以看到存储在$ scope.restCalls中的“Rest-Calls”。
$scope.restCalls = [
{
resource1: RestService.call1,
resource2: RestService.call2,
resource3: RestService.call3
},
{
resource4: RestService.call4,
resource5: RestService.call5,
resource6: RestService.call6
},
{
resource7: RestService.call7,
resource8: RestService.call8,
resource9: RestService.call9
}
];
$ scope.data象征数据为每个标签。该数组中的每个对象都包含该选项卡的数据。所有资源都被初始化为空,如果用户切换到页面,资源将被存储在此处。
$scope.data = [
{
resource1: {},
resource2: {},
resource3: {}
},
{
resource4: {},
resource5: {},
resource6: {}
},
{
resource4: {},
resource5: {},
resource6: {}
}
];
到目前为止这么好。我保证通话正常。在我的应用程序中有多个选项卡,所以我想尝试实现一些延迟加载:D
因此我实现了一个函数:(索引是在html中定义的,只是0到2之间的数字)
<uib-tab heading="Tab1" select="tabChange(0)">
... HERE I have some tables which access the $scope.data[0] data
</uib-tab>
<uib-tab heading="Tab2" select="tabChange(1)">
... HERE I have some tables which access the $scope.data[1] data
</uib-tab>
<uib-tab heading="Tab3" select="tabChange(2)">
... HERE I have some tables which access the $scope.data[2] data
</uib-tab>
在这里你可以看到功能:
$scope.tabChange = function (index) {
for (var propertyName in $scope.data[index]) {
$scope.restCalls[index][propertyName]().$promise.then(function (data) {
$scope.data[index][propertyName] = data;
});
}
};
现在让我们来问题描述:
- 当我更改选项卡功能tabChange被解雇。
- 每Restcall得到正确
发射结果只得到存入的$ scope.data [指数]错误的性质。它始终是最后一个属性名称。因此,例如我更改为tab2(索引1)。 $ scope.data最终会是这样的:
$scope.data = [
{
resource1: {},
resource2: {},
resource3: {}
},
{
resource4: {},
resource5: {},
resource6: RESULT OBJECT OF THE LAST REST CALL!
},
{
resource7: {},
resource8: {},
resource9: {}
}
];
我认为PROPERTYNAME不可在然后运作。但我不知道如何让这个名字进入这个函数。
工作正常!谢谢你不知道如何将变量绑定到**然后函数**中。 – walki12