Мне нужно вызвать служебную переменную в контроллере. Я попытался вызвать $scope.userData1.data.name
вне функции Сервис, он не определен. Если я положил {{userData1}}
в шаблон Сообщения Ctrl, он отображает весь массив данных, включая имена.angularJS с использованием служебной переменной
Мне нужно загрузить i-frame, используя переменную user_name.
angular.module('starter.controllers', [])
.factory('UserService', function($http) {
var data;
return{
getData: function($http) {
return $http.get("http://www.website.com/index.php/id/user/call12").
success(function(response) {
/// console.log(JSON.stringify(response));
userData=response.data;
return userData;
}).error(function(data, status, headers, config) {
// log error
});
}
}
})
.controller('MessagesCtrl',function ($scope, Messages,$http,$ionicPopup,$timeout,$window,UserService,Outbox,$sce) {
$scope.userData1 = {}; // updated
$scope.myCtrl2= function(UserService,$http) {
UserService.getData($http).then(function(data) {
$scope.userData1 = data;
console.log($scope.userData1.data.name); // USERNAME exist
var name= $scope.userData1.data.name;
});
}
$scope.myCtrl2(UserService,$http);
var name= $scope.userData1.data.name; //undefined
$scope.formData4.upload_url = $sce.trustAsResourceUrl("http://www.website.com/index.php/id/user/view_form/"+ name);
})
шаблона:
<form ng-controller="MessagesCtrl" ng-disabled="isRequesting">
<span class="item item-input" >
<span class="input-label"> </span>
<iframe id="iframe-123" src="{{formData4.upload_url}}" style="border: 0px none; height: 80px; margin: auto; width: 100%; overflow: hidden;" frameborder=0></iframe></span>
</form>
возможно дубликат [Как вернуть ответ от Ajax позвонить?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-a-ajax-call) –
@AlexisKing Привет Алексис. Ответ был возвращен в хорошей форме. но область действия не может использоваться вне функции, называемой службой. – xyonme
Проблема заключается в том, что при использовании конструкции 'MessagesCtrl',' $ scope.userData1.data.name' был оценен до того, как 'callback'' $ http' был уволен -> получил 'undefined', потому что вы не инициализировали '$ scope.userData1'. И еще кое-что о вашем коде, вам не нужно вводить 'UserService' и' $ http' в '' scope.myCtrl2' из-за 'javascript закрытия'. Взгляните на эту скрипку, я уже изменил ваш тайм-аут $ http до $, но он должен работать одинаково. Надеюсь, поможет. http://jsfiddle.net/themyth92/w0st1y7e/ – themyth92