这有效:
function DetailsCtrl($scope,Plan){ $scope.entities = Plan.query(); }
这不是:
function DetailsCtrl($scope){ var injector = angular.injector(['myApp.services']); var name = 'Plan'; var Entity = injector.get(name); $scope.entities = Entity.query(); }
在第二种情况下,不会抛出任何错误,并且console.log($scope.entities)转储已加载的实体.但是变量不会在模板中呈现.我猜测在使用vars填充$scope之前正在加载模板.如果是这样,我如何确保$scope及时加载变量?
解决方法
我创建了一个动态加载资源的服务:
服务:
var m = angular.module('myApp.services',['ngResource']). factory('Entity',function($resource){ return { Plan: $resource('/api/plans/:id',{id: '@id'}) } }). value('version','0.1');
控制器:
function DetailsCtrl($scope,Entity){ $scope.entities = Entity['Plan'].query(); }