如何从javascript传递数组值angularjs控制器
我试图通过其我从JavaScript文件数组获取值,并通过使用一个全局变量如何从javascript传递数组值angularjs控制器
在角文件它推到angularJS,我试图通过访问像 全局变量来获取这些值,但它返回我不确定,但是我跑了
我怎么能在我的控制研究访问此值
全局变量是不是一个好主意,也许你需要与其他互动网页或框架。
是你应该乌斯一个全局变量,你可以在index.html的一个特殊的脚本声明
<script type="text/javascript">
let globalarray;
</script>
你也可以ASIGN的globalarray到窗口的属性
window.globalarray
或者$ rootScope。
我已经试过这一个$ scope.globalarray = $ window.globalarray; console.log($ scope.globalarray)但仍未定义。并且当我检查了console.log(globalarray.length)的长度时,它将返回0,但是console.log(globalarray)返回给我2值 –
通过上面显示的示例。
您不推送
globalarray
中的值。通过不呼叫abc()
功能。如果您的
globalarray
变量是窗口级别的全局变量,它将在您的角度应用程序中的任何地方可用。
请观察我演示过的小提琴的行为。我也做了一个plunk所以你会清楚地理解。
var globVar = [12 ,33];
var myApp = angular.module('myApp', []);
myApp.controller('MyController', function($scope) {
$scope.globVar = globVar;
});
更新
由于数据进来,你需要重新运行摘要周期和更新变量的回调。请注意这个小提琴,因为它有你的坐标init。
// 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);
});
现在希望它帮助。
@ v.josh请参阅更新后的答案和附带的小提琴。我试图尽可能描述性。 –
可以请你检查一下我已更新的plunker然后你可以得到我想要的确切想法 –
@ M.JunaidSalaat不推荐使用'scope()'方法,并且[在生产中运行时]不会工作(https:/ /docs.angularjs.org/guide/production)用'$ compileProvider.debugInfoEnabled(false);'。 –
试试这个:
$scope.globalarray = [];
function abc() {
var array = [4,5]
angular.forEach(array,function(k,v){
$scope.globalarray.push(k);
})
}
看看这个链接:
AngularJS access scope from outside js function
,你可以用不同的方式简单地想起来了,一旦你进入范围,你使用数组中的数据在控制器内调用setter方法,然后可以执行所需的任何操作。我在项目中使用了这种方法,效果很好。
例如:
// externalScope是在角CONTROLER声明的全局变量 //这是从的角度 外部访问控制器和触发方式的方式//我们想要的是通知有些数据已被改变,所以它可以做一些事情。在我的例子中,selectedUserValue是我传递给控制器的数据位。
if (externalScope) {
externalScope.$apply(function() {
externalScope.selectUser(selectedUserValue);
});
}
这个代码存在wherver你试图调用范围的方法有一些数据在控制器外部
现在的实际控制人,我们有这样的事情:
var externalScope;
(function() {
controller code
某处控制器:
externalScope = $scope; //this exposes the scope to the outside world
请注意externalScope变量的声明方式控制器以外的红色,所以它将是全球性的。
之后,只需在外部调用的角度法中使用任何需要的代码即可。
在我的情况这是一个二传手,然后调用别的东西,这使得使用该资料:
$scope.selectUser = function (userID) {
if (userID && userID !== $scope.selectedUserID) {
$scope.selectedUserID = userID;
$scope.loadUserRecords();
}
};
希望这是有道理的。免责声明......这不是我称之为微不足道的事情,只有在你没有其他选择的情况下才能使用!
我已经尝试过使用$ apply functron,但它仍然不能正常工作,请你检查我已经更新的plunker。 –
如果变量是全局变量(我的意思是窗口级全局变量),那么它在您的应用程序中的任何位置都可用,包括您的控制器内部。 –
首先,abc函数声明是错误的,你在{ – Kalamarico
@ v.josh之前忘记了()你可以发布[** Minimal,Complete和Verifiable示例**](https://*.com/help/mcve )?既然这样'var globalarray = [];函数abc(){var array1 = [4,5]; globalarray.push(数组1)}; ABC(); (function(){console.log(globalarray [0]);})();'会给出正确的输出:'[4,5]'。 –