如何使用Angular JS从外部范围访问数组值

时间:2018-11-15 23:44:25

标签: javascript jquery angularjs json

好的,我知道这是一个非常愚蠢的问题。在创建此线程之前,我四处查看,但我完全无法弄清楚。这是我的代码。我的问题是,在将值从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 :(得分:1)

我找到了解决我的问题的解决方案。如果有人遇到类似问题,希望对您有所帮助。

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) {
});

答案 1 :(得分:0)

您可以使用window在angular和任何组件之间存储和访问数据。 Angular也有一个名为$window的包装器也可以访问它。

在javascript中:

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

成角度:

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

  $scope.getData= function() {
    //using $window
    alert($window.data);
    //Or 
    alert(window.data);
  };
}]);