2014-01-27 123 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