由於一些特殊的情況,我目前正忙於使用AngularJS創建一個僅客戶端,無服務器的應用程序。它的唯一目的(目前)是讀取上傳.json文件,其中包含對象活動的數組如下:
[{
"id": "sta",
"title": "IT Strategy & Governance",
"type": "management",
"order": 1
},
{
"id": "por",
"title": "Portfolio Management",
"type": "management",
"order": 2
},
{
"id": "org",
"title": "Organization & Process Management",
"type": "management",
"order": 3
}]
請記住,這個文件是靜態的,而不是由任何形式的產生後端。我現在想達到目標。
目標1是加載這個完整的對象列表。我做到這一點使用角$資源,如下所示,它精美的作品:
服務:
pexServices.factory('Activities', function($resource) {
return $resource('data/activities.json', {});
});
控制器:
pexControllers.controller('ActivityCtrl',
function($scope, Activities) {
$scope.activities = Activities.query();
}
);
目標2是走出一個個人紀錄這個數組,通過它的ID選擇它。像以前一樣,數據應該從包含所有數據對象的大數據文件中抽出。
我的想法太添加自定義得到功能上面已經介紹了$資源,包括一些transformResponse代碼提取請求的元素:
pexServices.factory('Activities', function($resource) {
return $resource('data/activities.json', {}, {
get: {
method: "GET",
transformResponse: function(rawData, headersGetter) {
var jsonData = jQuery.parseJSON(rawData);
var requestedObject = jsonData.filter(function(activity) {
return activity.id == "THEREQUESTEDID";
});
return requestedObject.shift();
}
}
});
});
這個偉大的工程,但只是作爲長因爲我在THEREQUESTEDID硬編碼請求的ID。不過,我當然希望一個變量參數傳遞到get函數以拉所需要的對象,像這樣:
$scope.activity = Activities.get({activityId: "sta"});
不幸的是,這是我一直堅持了一段時間,現在的點。如何啓用一個參數從我的控制器一直傳遞到transformResponse函數,我可以使用它來過濾數組?
如前所述,文件本身是靜態的,不會對任何參數做出反應,所以我需要在客戶端手動執行過濾。
非常感謝您的支持,並牢記我有限的JS技能。 :-)
(如果你有另一個完全不同的解決我的問題在腦海,請隨時和分享吧!這只是我的第一炮。)
非常感謝您的意見。一旦我的JS技能進一步提升,我會再次詳細考慮它! – Joshua