正如您在本問題中提供的代碼中所見,我嘗試循環對象的屬性。所有屬性都是空的對象!我還有另一個對象,其中存儲了一些其他的對象(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