Здравствуйте.
Начал переписывать проект, пока он на ранней стадии, но столкнулся с трудность.
В контроллере есть функция, которая вызывается по клику по ссылке, получает json, который заносит в массив. Дальше эти данные отображаются на странице с помощью ng-repeat и директивы.
$scope.getFiles = function(id) {
$element.find("files").remove(); // очистка div'a
$http.get("http://тут_урл").success(function(response) {
$scope.files = response;
});
};
Директива
app.directive("file", function() {
return {
restrict : "E",
scope : true,
controller : function($scope, $element) {
$scope.fileName = $scope.file.fileName;
$scope.fileContent = $scope.file.content;
},
link : function(scope, el, attr) {
scope.fileName = scope.fileName;
scope.fileContent = scope.fileContent;
},
template : "<div id=\"{{fileName}}\"><h3 class='title'>name: {{fileName}}</h3> \
<pre class=\"java\">{{fileContent}}</pre></div>"
}
});
Пробую просто вынести функцию в фабрику и присвоить результат переменной.
angular.module("myApp").factory("gistsFactory", function( $http) {
var service = {};
service.getFiles = function(id) {
// $element.find("files").remove();
$http.get("http://тут_урл").success(function(response) {
return response;
});
}
return service;
})
//В контроллере меняю на вызов функции
$scope.getFiles = function(id) {
$scope.files = gistsFactory.getFiles(id);
};
Но если первый вариант работает, то при вызове из фабрики, данные приходят, но на странице не отображаются, хотя в обоих случаях я внутри одной и той же функции одной и той же переменной присваиваю данные, которые просто получаются в разных местах.