У меня есть код в разных слоях: 1. Завод, содержащий весь мой запрос на $ http и возвращающий обещание. 2. Контроллер, который обрабатывает это обещание, затем назначает его переменной $ scope, чтобы отобразить ее на gridview.Динамическая сетка с использованием Angularjs
И теперь я пытаюсь создать директиву для обработки Gridview и просто передать данные в качестве attr для обработки в функции ссылки и отобразить ее. При этом я пытаюсь добиться повторного использования кода. Проблема в том, что переменная данных в области видимости пуста из-за асинхронного вызова, конечно, что было бы гораздо лучшим подходом к этому?
angular.module('parametrosModule').factory('apiMethods', ['$http', 'apiUrl', function ($http, apiUrl) {
return {
getBleh: function() {
return $http.get(apiUrl.urlBase + '/getBleh');
},
}
}])
.controller('transactionController', ['apiMethods', function (apiMethods) {
var vm = this;
function getData() {
apiMethods.getBleh()
.then(function (response) {
vm.data = response.data;
});
};
}])
.directive('dynamicGrid', [function() {
return {
restrict: 'E',
templateUrl: 'app/directives/dynamicGrid.html',
scope: {
data: '=',
headers: '='
},
link: function (scope, elem, attrs) {
var vm = this;
vm.values = scope.data;
vm.headers = scope.headers;
}
}
}]);
Это несколько мой код после форматирования, дело в том, что атр данные поступают пустыми из-за опоздания в вызове API. Вся идея состоит в том, чтобы создать что-то, что строится после получения x данных от любого приложения. Благодаря!!
Показать источник 'dynamicGrid.html'. Если вы используете переменные (** data **, ** headers **) непосредственно в шаблоне 'dynamicGrid.html', вам не нужно отслеживать изменения в переменных непосредственно в функции' link'. –