首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自控制器的调用指令

来自控制器的调用指令
EN

Stack Overflow用户
提问于 2015-06-22 18:46:21
回答 1查看 1.2K关注 0票数 3

我有一个登录函数,我希望在点击时,一个微调器被加载,直到事件完成,然后加载微调器被隐藏。我正在构建一个离子应用程序。

目前我的代码是这样的

这是绑定到单击登录的作用域函数

代码语言:javascript
复制
$scope.doLogin = function(loginData) {
    console.log("in doLogin")
    $scope.submitted = true;

    if (loginData.$valid) {
      $ionicLoading.show({
        //make the template a directive
        template: '<ion-spinner class="spinner-energized" icon="spiral"></ion-spinner>',
        hideOnStateChange: true,
        duration: 2000
      });
      $location.url('/about');    
    }
  };

本着在AngularJS中模块化代码的精神,我希望ionicLoading.show事件完成相当多的单击事件,并在完成处理后将其隐藏。我觉得最好的方法是通过指令,但到目前为止,我对如何实现这一点有点模糊。

http://plnkr.co/edit/pi71uQunHSYMwONqlPTa?p=info

我想把它变成一个指令,这样我就可以在我的几个单击按钮函数的代码中调用它

代码语言:javascript
复制
$ionicLoading.show({
          //make the template a directive
          template: '<ion-spinner class="spinner-energized" icon="spiral"></ion-spinner>',
          hideOnStateChange: true,
          duration: 2000
        });

我的主要问题是,只有在loginData.$valid为true时才能触发ionicLoading.show

有什么需要帮忙的吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-06-23 18:12:00

在这种结构中,我只有一个指令可以在我的各种html中调用,我想要执行ionicLoading函数。

在我的指令中

代码语言:javascript
复制
angular.module('my.directives', [])
    .directive('mainDirective',['$ionicLoading', function($ionicLoading) {
      return function(scope, element, attrs) {
        element.bind("click", function() {
          console.log("directives")
          var a = scope.$apply(attrs.mainDirective)
          console.log(a)
          if(a ===true){
            console.log("inside inside")
                $ionicLoading.show({
                template: '<ion-spinner class="spinner-energized" icon="spiral"></ion-spinner>',
                hideOnStateChange: true,
                duration: 2000
            });
                switch (attrs.mainDirective) {
                    case "loginData.$valid":
                        scope.$apply("doLogin(loginData)")
                        break;
                    case "regForm.$valid":
                        scope.$apply("submitRegForm(regForm)")
                        break;
                    case "newData.$valid":
                        scope.$apply("createLoanApplication(newData)")
                        break;
                    case "pswdChange.$valid":
                        scope.$apply("submitPswdChange(pswdChange)")
                        break;
                    case "feedback.$valid":
                        scope.$apply('submitFeedback(feedback)')
                        break;
                }

          }

        });
      }
    }
    ])

在我的许多将使用指令函数的控制器作用域之一中

代码语言:javascript
复制
$scope.doLogin = function(loginData) {
    console.log("in doLogin")
    $scope.submitted = true;

      AuthenticationService.login(loginData);    
  };

在许多需要指令的html页面中的一个页面中

代码语言:javascript
复制
<div>
  <button main-directive = "loginData.$valid" class="button button-block button-positive" type="submit">Log in</button>
</div>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30977996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档