2014-01-27 179 views
0

我有一个服务来通过宁静的slim API收集数据。 动态指令需要动态数据

test.factory('DataService', function ($http, $log, $resource) { 
    return $resource('php/planets') 
}); 

test.controller('tableviewCtrl', function ($scope, DataService, $resource) { 
    DataService.query(function(response) { 
     $scope.matches = response; 
    }); 
}); 

,我有一个指令:

<tableview data="{'view': 'planets', 'settings': {'search': 'false'}, 'cols': ['id','name','region'] }"></tableview> 

和例如指令:

<tableview data="{'view': 'superheroes', 'settings': {'search': 'false'}, 'cols': ['id','name','strength'] }"></tableview> 

根据 “意见” 的参数我想改变$resource URL中我的服务。例如从php/planetsphp/projects

任何想法如何处理?

编辑:

test.factory('DataService', function ($http, $log, $resource) { 

    resourceName = 'planets'; 

    return { 
     changeResource: function (resourceName) { 
       resourceName = resourceName; 
     }, 
     data: $resource('php/'+resourceName) 
    } 

}); 

test.controller('tableviewCtrl', function ($scope, DataService, $resource) { 

    DataService.changeResource('superheroes').then(function() { 
     DataService.data.query(function(response) { 
      $scope.matches = response; 
     }); 
    }); 

}); 

能有人帮助?

回答

1

我会为使用ngInit指令初始化的每个<tableview>使用一个内部控制器。

的Javascript:

test.service('DataService', function ($http, $log, $resource) { 
     return { 

     resourceName = 'planets'; 

     changeResource: function (resourceName) { 
      this.resourceName = resourceName; 
     }, 

     data: $resource('php/' + resourceName) 

     } 
}); 

test.controller('tableviewCtrl', function ($scope, DataService, $resource) { 

     // am I still necessary? 

}); 

    test.controller('innerCtrl', function ($scope, DataService, $resource) { 

     $scope.init = function(resourceName) { 
     DataService.changeResource(resourceName); 
     DataService.data.query(function(response) { 
      $scope.matches = response; 
     }); 
     }; 

}); 

HTML:

<tableview 
     ng-controller="innerCtrl" 
     ng-init="init('planets')" 
     data="{'view': 'planets', 'settings': {'search': 'false'}, 'cols': ['id','name','region'] }"> 
</tableview> 
+0

听起来不错,我怎么弄参数去控制? – nofear87

+0

这些''有多少个由控制器处理?一?许多? – meilke

+0

很多...我认为4-10 – nofear87