如何将数组值从JavaScript传递到AngularJS控制器



我正在尝试传递我从javascript文件中获得的值,并通过使用全局变量将其推向gangularjs

在Angular文件中,我试图通过访问全局变量来获取这些值但是它使我不确定,但是我跑了

如何在控制器中访问此值

尝试以下:

$scope.globalarray = [];
function abc() {
   var array = [4,5]
   angular.forEach(array,function(k,v){
     $scope.globalarray.push(k); 
  })
}

请查看此链接:

angularjs从外部JS函数访问范围

您可以以不同的方式想到它,一旦您可以访问范围,您只需在阵列中使用数据的数据来调用控制器内部的设置器方法,然后您可以做任何需要的事情。我在项目中使用了这种方法,并且效果很好。

示例:

//外观是在角控制器中声明的全局变量 //这是一种从角外部访问控制器和触发方法的方法 //我们想要的就是向Angular发出信号,表明某些数据已更改,以便它可以做某事。在我的示例中,selectuservalue是我传递给控制器的数据位。

if (externalScope) {
    externalScope.$apply(function () {
        externalScope.selectUser(selectedUserValue);
    });
}

此代码居住在您尝试使用一些数据调用范围方法的控制器之外

现在在实际控制器中,我们有类似的东西:

    var externalScope;
    (function () {
   controller code

控制器中的某个地方:

externalScope = $scope; //this exposes the scope to the outside world

请注意如何在控制器之外声明外观变量,因此它将是全局。

之后,只需用外部调用的角度方法编码您需要的任何内容。

在我的情况下,它是一个设置器,然后调用其他使用该数据的东西:

$scope.selectUser = function (userID) {
            if (userID && userID !== $scope.selectedUserID) {
                $scope.selectedUserID = userID;
                $scope.loadUserRecords();
            }
        };

希望这是有道理的。免责声明...这不是我所说的琐碎的东西,只有在您真的没有其他选择时才能使用!

按照您上面显示的示例。

  1. 您没有在globalarray中推动值。通过不调用abc()函数。

  2. 如果您的globalarray变量是窗口级别的全局,则可以从Angular App中的任何地方获得。

请观察我为DemonStation做出的小提琴中的行为。我也做了一个plunk,所以您会清楚地理解。

小提琴

var globVar = [12 ,33];
var myApp = angular.module('myApp', []);    
myApp.controller('MyController', function($scope) {      
  $scope.globVar = globVar;
}); 

update

由于数据有回调,因此您需要重新运行摘要周期并更新变量。请观察此小提琴,因为它具有您的坐标初始化。

// we got the cords
var cords = ol.proj.transform(coordinates, 'EPSG:3857', 'EPSG:4326');
// we get the scope from the element that has the controller binded to it.
var scope = angular.element(document.getElementById("MainWrap")).scope();
// we call a digest cycle of angular to update our scope variable sinse it comes in a callback when angular is loaded
scope.$apply(function () {
   scope.updateCords(cords);
});

工作小提琴

希望现在有帮助。

全局变量不是一个好主意,也许您需要与另一个网络或框架进行交互。

您应该构成一个全局变量,您可以在index.html中使用特殊脚本声明

声明
<script type="text/javascript">    
 let globalarray; 
</script>

您还可以将全局array缩放到窗口的属性

的属性
window.globalarray

或$ rootscope。

相关内容

  • 没有找到相关文章

最新更新