动态地将资源注入控制器 – angularjs

前端之家收集整理的这篇文章主要介绍了动态地将资源注入控制器 – angularjs前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这有效:

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();
}

猜你在找的Angularjs相关文章