Как получить доступ к значению массива из области видимости с помощью Angular JS - PullRequest
0 голосов
/ 16 ноября 2018

Хорошо, я знаю, что это действительно глупый вопрос.Я искал повсюду, прежде чем делать эту тему, и я просто не в состоянии понять это.Это код, который у меня был.Моя проблема в том, что между передачей значения из getJSON в угловой контроллер мой массив потерял свои значения.Какой правильный способ сделать то, что я пытаюсь сделать здесь?

function getJSON(json) {
    data = [];
    $.each(json, function (index, value) {
        data.push(value);
    });
    console.log(data); // Accurately logs array data
    return data;
}
function passValue() {
    return getJSON();
}
app.controller('ExampleController', function($scope) {
    x = passValue()
    $scope.title = x[0]; // Throws error
    console.log(x); // Only returns an empty array
}

И это у меня в сценарии на мой HTML-файл.Это работает на 100%.

$(document).ready(function() {
    $.getJSON("{{ url_for('static', filename='movies.json') }}?id={{ movie_id }}", function(json) {
         getJSON(json);
});

Например, это работает.

function getJSON(json) {
    data = [];
    $.each(json, function (index, value) {
        data.push(value);
    });
    console.log(data) // Acurrately logs array data
    document.getElementById('exampleDiv').innerHTML = data[0] // Accurately appends array data (0 being title)
}

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Вы можете использовать window для хранения и доступа к данным между Angular и любым компонентом.Angular имеет обертку с именем $window для доступа к ней.

В javascript:

function foo(value){
    window.data = value;
}

В angular:

app.controller('ctrl', ['$scope', '$window', function($scope, $window) {

  $scope.getData= function() {
    //using $window
    alert($window.data);
    //Or 
    alert(window.data);
  };
}]);
0 голосов
/ 16 ноября 2018

Я нашел решение, которое решает мою проблему. Если у кого-то есть подобная проблема, я надеюсь, что это поможет вам.

function getJSON(json) {
    data = [];
    $.each(json, function (index, value) {
        data.push(value);
    });
    console.log(data)
    update(data)
}

function update(data) {
    var $scope = angular.element(document.querySelector('#movie')).scope()
    $scope.$apply(function(){
        $scope.title = data[0];
    });
}

app.controller('MovieController', function($scope) {
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...