В моем приложении MEANJS. Я устанавливаю значение переменной области видимости в результате запроса из моей функции контроллераНевозможно получить доступ к переменной области видимости с использованием запроса Mongoose в контроллере
$scope.myVar = User.query();
console.dir($scope.myVar); //Returns all the documents from the DB correctly
console.log('User's name is : ' + $scope.myVar[0].name); //This comes as undefined
Так или иначе, в следующей строке, когда я пытаюсь открыть имя поля в пределах одной и той же функции контроллера, оно приходит как не определено. Кроме того, весь результат читается абсолютно правильно в моем файле просмотра. Поэтому, когда я позвоню
{{myVar.name}}
В моем файле просмотра он выводит имя правильно. Я не понимаю этого поведения вообще. Это мой первый опыт работы с Angularjs, и я мог пропустить что-то основное, но я ценю любую помощь на этом этапе.
Edit - Кроме того, длина $ scope.myVar всегда 0 в контроллере
Это волшебство для браузера. :) Когда вы расширяете объект из console.dir, консоль повторно запрашивает данные из var, отображая, таким образом, заполненный документ. С другой стороны, console.log генерирует строку на основе содержимого myVar в этот момент времени и не обновляет ее, когда объект доступен. –
Ничего себе, спасибо за этот самородок, в аду не было никакого способа, я бы подумал, что один из них. Но моя проблема сохраняется, потому что мне нужно выполнить некоторые операции над $ scope.myVar после того, как она получит результат запроса. Для чего мне нужно запустить его с помощью $ scope.myVar.length. Но в этом случае длина всегда равна 0. Никакой браузер не задействован здесь, но я все еще не могу получить доступ к $ scope.myVar внутри контроллера. – KVNam
Вам необходимо использовать выполненный или успешный обратный вызов отправляемого запроса, чтобы код не работал до тех пор, пока не будут данные для его взаимодействия. –