如果您使用的是工廠,要添加例如,您可以將功能添加到返回的項目的原型(DEMO)功能:
app.factory('Appointment', ['$resource', function($resource) {
var Item = $resource('appointments.json',{/*bindings*/},{/*actions*/});
Item.prototype.hasServices = function() {
if(this.services.length > 0) return true;
else return false;
};
Item.prototype.partOfDay = function() {
if(this.time.split(':')[0] > 12) return "afternoon";
else return "morning";
};
return Item;
}]);
,然後訪問它在你的資源控制器:
$scope.appointments = Appointment.query({}, function() {
console.log($scope.appointments[0].partOfDay())
});
在視圖
或者直接內部例如是NG-重複:
{{appointment.partOfDay()}}
要回答你最後的問題,我認爲上述解決方案是一個合適的angularjs技術。 只要您的函數與特定的資源類型相關聯,我認爲最好直接將它們附加到相應的資源對象。爲什麼要在控制器中創建輔助函數?當您必須將資源作爲參數傳遞時,此外,這些函數可以在多個控制器或範圍中使用?
感謝Plunker的例子。我想我並不真正瞭解當您從JSON服務中獲取數組時,$資源是如何工作的。當我調試的東西,它仍然設置一個「資源」對象,但我假設一旦實際獲得,它會以某種方式設置爲約會對象?我有它的工作,但只是想了解我是如何得到它的工作。 –
工廠只叫Appointment,它返回一個標準資源對象,並在其原型中增加了附加功能。 –
它基本上與您在普通js中編寫一個名爲Appointment的基本函數相同,該函數返回具有某些屬性的對象。這與請求的json本身沒有多大關係。一旦ajax請求完成,結果將被附加到資源對象。 –