如果您正在使用工厂并想要添加一个函数,您可以例如将该函数添加到返回项目的原型(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-repeat:
{{appointment.partOfDay()}}
要回答您的最后一个问题,我认为上述解决方案是一种合适的 angularjs 技术。一旦您拥有与特定资源类型关联的函数,我认为最好将它们直接附加到相应的资源对象。当您必须将资源作为参数传递并且函数可以在多个控制器或作用域中使用时,为什么要在控制器中创建辅助函数?!