2015-04-11 3 views
0

Я изучаю AngularJS, и у меня есть один файл JSON с данными, которые я хочу загрузить в отдельные переменные. В моем файле JSON есть два объекта/массивы: «views» и «addressbook». Я могу привязать данные к $ scope.variabale в html, но это не то, что я ищу. Я хотел бы загрузить представления и адресную книгу в «представления var» и «var adressbook», поэтому я могу получить к ним доступ с помощью jquery.Как загрузить объекты JSON в отдельные глобальные переменные, используя AngularJS?

Мой JSON:

{ 
    "myData": { 
     "views": [ 
      { 
       "view": "Nieuwe activiteit", 
       "link": "index.html", 
       "active": true 
      }, 
      { 
       "view": "Activiteiten", 
       "link": "activiteiten.html", 
       "active": false 
      } 
     ],"adresboek": [ 
      { 
       "Voornaam": "Ruben", 
       "e-mail": "[email protected]", 
       "mobiel": "0612345678", 
       "hasFacebook": true, 
       "hasTwitter": true 
      }, 
      { 
       "Voornaam": "Roos", 
       "e-mail": "[email protected]", 
       "mobiel": "0612345677", 
       "hasFacebook": true, 
       "hasTwitter": true 
      } 
     ] 
    } 
} 

Что я пытаюсь получить:

var alldata = $http.get('data/data.json').then(function(res) { 
    var views = res.data.mydata.views; 
    var adresbook = res.data.mydata.adresbook; 
}); 

Я хотел бы, чтобы связать данные, как так: $ scope.views = alldata.views; $ scope.contacts = alldata.addressbook;

Любая помощь приветствуется :)

+0

Вы можете ссылаться на глобальную область с окном. window.alldata = ... –

ответ

0

Вы можете получить доступ к глобальной области JavaScript в любой момент с помощью ссылки на объект окна. Обязательно используйте $ apply в угловом, если вы изменяете данные вне углового дайджеста. В вашем примере:

var alldata = $http.get('data/data.json').then(function(res) { 
    window.alldata = { 
     "views": res.data.mydata.views, 
     "addressbook": res.data.mydata.adresbook 
    }; 
}); 

Теперь Вы можете получить доступ к данным в JQuery, например .:

console.log(window.alldata.views); 
+0

Tnx Scott. Пробовал это, не работал. Я получаю «undefined» для console.log (window.alldata) и console.log (windows.alldata). – Chennard

+0

try 'console.log (window.views)' и 'console.log (window.adresbook)' – jlb

+0

@Chennard - я изменил свой оригинальный ответ, чтобы отразить ваше желание иметь представления и адресную книгу в объекте alldata. В целом, это все равно тот же самый ответ, но теперь он завернут в alldata. Вы можете получить доступ с помощью alldata или window.alldata из вашего кода jQuery. –

0

Почему именно вы хотите поместить эти переменные в глобальной области/окна? Обычно это не рекомендуется. Вы можете подумать о создании Угловой службы. Служба позволяет вам получать доступ к переменным в разных модулях.

В контексте вашего кода, где возникает этот запрос $ http.get?

EDIT: В ответ на ваш комментарий:

Хорошо, попробовать что-то вроде этого?

myApp.controller('getData', function($http){ 
    this.onLoad: function(){ 
    $http.get('data/data.json').then(function(res) { 
     $scope.views = allData.views; 
     $scope.contacts = allData.addressBook; 
    } 
    }; 
    this.onLoad(); 
}; 

Когда вы впервые создаете экземпляр своего углового контроллера, он вызывает функцию loadData и задает переменные переменной $ scope.

(Я не проверял ваш код $ http, я просто скопировал то, что у вас было).

+0

Я прототипирую и не забочусь о безопасности. Запрос происходит в начале verry, это единственный javascript, который у меня есть. var myApp = angular.modelll myApp.controller ... $ http var alldata .. – Chennard

+0

Хорошо, я отредактировал свой ответ, дайте мне знать, если это более полезно для вас. – ChadF

Смежные вопросы