javascript - angularjs 控制器中声明方法的问题
PHP中文网
PHP中文网 2017-04-10 18:01:52
[JavaScript讨论组]
    //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(){});
    //};
PHP中文网
PHP中文网

认证0级讲师

全部回复(3)
迷茫

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;

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号