首页 > angularjs 控制器中声明方法的问题

angularjs 控制器中声明方法的问题

    //html
    <a ng-click="inviteMember.contact()">invite member by contact<a>

    //javascript
    $scope.inviteMember = {
        contact: ContactInvitation,
    };

    function ContactInvitation() {
        var modalInstance = $uibModal.open({
            templateUrl: 'contact-invitation.tmpl.html',
            size: 'md',
        });
        modalInstance.result.then(function(){},function(){});
    }

    //为什么写成下面这样就无效呢?
    //var ContactInvitation = function() {
    //    var modalInstance = $uibModal.open({
    //        templateUrl: 'contact-invitation.tmpl.html',
    //        size: 'md',
    //    });
    //    modalInstance.result.then(function(){},function(){});
    //};

var声明的变量不是有变量提升吗?但是你没看仔细,只是提前声明,不会提前定义。。
你注释的 那一段。。等同于

  var ContactInvitation ;
  $scope.inviteMember = {
        contact: ContactInvitation,  //ContactInvitation  == undefined
    };
 
  ContactInvitation = function() {
      var modalInstance = $uibModal.open({
          templateUrl: 'contact-invitation.tmpl.html',
           size: 'md',
       });
        modalInstance.result.then(function(){},function(){});
   };

ContactInvitation 在调用之后才被定义


楼主可以把 var ContactInvitation这样的声明放到$scope.inviteMember={}前面去,楼主自己搜索 函数的申明这样的内容var 和 function 表达函数的时候效果是不一样的。


楼主基础不扎实啊,函数是直接提升到最上面。
变量的话是只是提升var ContactInvitation;

【热门文章】
【热门文章】