$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);
}
我尝试过使用全局变量并将页面指定给它,但它是undefined
。
我可以通过调用hello(page)
内的openModal
来访问此变量,但这不会起作用,因为它会在不需要时调用hello()
。
我有两个按钮并在点击' btn1'时调用openModal函数,并在此按钮上传递页面参数,然后在该模态中有另一个按钮' btn2',调用hello ()点击btn2。
答案 0 :(得分:2)
Tl; Dr:使用您的范围,或使用服务。
如果这些方法在同一个控制器中:
您应该只能通过变量传递它:
$scope.data = {};
$scope.data = anything;
或$scope.data.field = anything
。$scope.data ... \\ Do anything
如果他们不是:
您可以使用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;
然后,确保将其注入控制器。在您的第一个功能中,您可以将您的服务称为:
$yourService.setData(anyData);
在第二个函数中取回数据:$yourService.getData();
答案 1 :(得分:0)
$scope.openModal = function (page, size) {
console.log(page); // this is working
$uibModal.open({
animation: true,
templateUrl: 'app/pages/servers/newRole.html',
controller: ModalInstanceCtrl, //resolved items can be use in this controller
size: size,
resolve: {
items: function () {
return page; // this will return value
}
}
});
};
angular.module('ui.bootstrap.demo').controller('ModalInstanceCtrl', function ($scope, $uibModalInstance, items) {
$scope.hello = function() {
console.log(items); // Here you can get value
}
});