编程语言
首页 > 编程语言> > javascript-为什么在模态解析中声明一个函数

javascript-为什么在模态解析中声明一个函数

作者:互联网

关于模态angular-ui的此代码示例,我有2个简单的问题.

可以找到代码here,我还引用了有趣的部分:

var ModalDemoCtrl = function ($scope, $modal, $log) {

  $scope.items = ['item1', 'item2', 'item3'];

  $scope.open = function (size) {

    var modalInstance = $modal.open({
      templateUrl: 'myModalContent.html',
      controller: ModalInstanceCtrl,
      size: size,
      resolve: {
        items: function () {
          return $scope.items;
        }
      }
    });

    modalInstance.result.then(function (selectedItem) {
      $scope.selected = selectedItem;
    }, function () {
      $log.info('Modal dismissed at: ' + new Date());
    });
  };
};

// Please note that $modalInstance represents a modal window (instance) dependency.
// It is not the same as the $modal service used above.

var ModalInstanceCtrl = function ($scope, $modalInstance, items) {

  $scope.items = items;
  $scope.selected = {
    item: $scope.items[0]
  };

  $scope.ok = function () {
    $modalInstance.close($scope.selected.item);
  };

  $scope.cancel = function () {
    $modalInstance.dismiss('cancel');
  };
};

所以我的第一个问题是,为什么我需要在项目上声明一个函数:

resolve: {
  items: function () {
    return $scope.items;
  }
}

我不能做这样的事情:

resolve: {
  items: $scope.items;
}

我的第二个问题是为什么项目不是单引号的字符串? javascript如何不将键混淆为局部变量?

谢谢您的解释!

解决方法:

对于第一个问题:

resolve: {
  items: function () {
    return $scope.items;
  }
}

resolve.items是一个函数.
resolve.items()返回一个数组

resolve: {
  items: $scope.items;
}

resolve.items是一个数组
resolve.items()导致错误.

需求是因为框架希望调用一个函数.

对于第二个问题:JS!= JSON.语法使之成为可能.如果您编写了items = …而不是items:…,那么它将被创建为全局变量(或者,如果严格模式处于活动状态,则会引发错误)

标签:bootstrap-modal,angularjs,angular-ui,javascript,function
来源: https://codeday.me/bug/20191121/2053692.html