$scope.openModal = function (page, size) {
console.log(page); // this is working
$uibModal.open({
animation: true,
templateUrl: 'app/pages/servers/newRole.html',
size: size,
resolve: {
items: function () {
return $scope.items;
}
}
});
};
$scope.hello = function() {
console.log(page); // need value of page from above function
var btn = document.createElement("BUTTON");
var t = document.createTextNode("ABC");
btn.classList.add("btn-primary", 'btn-xs', 'btn');
btn.appendChild(t);
document.getElementById('Id1').appendChild(btn);
}
我尝试使用全局变量并将页面分配给它,但它说未定义
。
我可以通过在 openModal
中调用 hello(page)
来访问此变量,但这不起作用,因为它会调用 hello()
> 当不需要时。
我有两个按钮,单击“btn1”时调用 openModal 函数,并在此按钮上传递页面参数,然后该模态“btn2”内有另一个按钮,单击 btn2 时调用 hello()。
最佳答案
Tl;Dr:使用您的范围,或使用服务。
如果这些方法位于同一个 Controller 中:
您应该能够通过变量传递它:
- 初始化它:
$scope.data = {};
- 向其中推送一些数据:
$scope.data = everything;
或$scope.data.field = everything
。 - 在您的函数中进一步使用它:
$scope.data ...\\执行任何操作
如果不是:
您可以使用AngularJS service 。完成数据处理后,您可以将其保存到您的服务中,然后稍后再取回。将其视为您想要的任何数据的 getter/setter。示例:
一个虚拟的 AngularJS 服务:
var service = angular.module('yourService', [])
.factory('$yourService', function () {
var yourdata = {};
return {
setData: function(data) {
yourdata = data;
},
getData: function() {
return data;
}
};
});
return service;
然后,请确保将其注入(inject) Controller 中。在您的第一个函数中,您可以将您的服务调用为:
$yourService.setData(anyData);
并在第二个函数中取回数据:$yourService.getData();
关于javascript - 如何在 AngularJS 中将变量从一个函数传递到另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38327326/