如何在angularJS中将变量从一个函数传递到另一个函数?

时间:2016-07-12 11:15:58

标签: javascript angularjs

$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。

2 个答案:

答案 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  
     }
    });