javascript - 如何添加 $scope.$on 以在没有 Controller 的情况下查看

标签 javascript angularjs angularjs-directive event-listener

我在 Angular 应用程序中使用一个插件来触发 $rootScope.$broadcast('signinBegin')。我想用 ng-if 显示一个 preloader 但我无权访问此 Controller 来添加 $scope.$on('signinBegin',function (){...})。当事件在 HTML View 中启动时,如何在没有 Controller 的情况下显示预加载器?

<div ng-if="preloader">
    <img src="../assets/img/preloader/material.gif" alt="preloader">
</div>
<div id="sign-form" class="panel panel-default">
    <div class="panel-body">
        <div class="row">
            <div class="col-md-12">         
                <!--  ng-submit should be signin() -->
                <form ng-submit="signin()" role="form" autocomplete="off" class="form-horizontal">
                    <fieldset>                                      
                        <div  class="input-group">
                            <span class="input-group-addon"><i class="fa fa-user"></i></span>
                            <input ng-model="user.email" type="text" class="form-control" id="email" placeholder="Email" required>
                        </div>
                        <div class="spacing"></div>
                        <div  class="input-group">
                            <span class="input-group-addon"><i class="fa fa-key"></i></span>
                            <input ng-model="user.password" type="password" class="form-control" id="password" placeholder="Password">
                        </div>
                        <div class="spacing"></div>
                        <button type="submit" class="btn btn-success btn-sm  pull-right">Sign In</button>
                    </fieldset>
                </form>
                <a ui-sref="forget-password" class="grey">Forget Password?</a>
            </div>

        </div>

    </div>
</div>

和这个app.config

app.config(function($stateProvider,$urlRouterProvider,$locationProvider,$authProvider) {
    $authProvider.signinState = 'login';
    $authProvider.signinRoute = '/login';

我使用ng-AA插件。

谢谢

最佳答案

您也许可以使用指令。例如:

myApp.directive('signinBeginFoo', function() {
   return {
       scope: true,
       link: function($scope) {
           $scope.$on('signinBegin', function() {
               $scope.preloader = true;
           });
       }
   }
});

现在,修改您的 DOM:

<signin-begin-foo>
    <div ng-if="preloader">
        <img src="../assets/img/preloader/material.gif" alt="preloader">
    </div>
</signin-begin-foo>

关于javascript - 如何添加 $scope.$on 以在没有 Controller 的情况下查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36513259/

相关文章:

angularjs - 如何从指令部分调用 ng-click?

javascript - Firefox 在选择时触发,而不是在更改时触发

javascript - Angular.js - 使用一个属性预填充输入,但将 ng-model 设置为不同的属性

javascript - 从两个 AJAX 请求构造一个 JavaScript 对象

angularjs - 使用 CURL 请求的 Ajax 身份验证 : Ionic app, Django、Rest、Oauth2

angularjs - AngularJS 中 Bootstrap Accordion 内的数据表

javascript - AngularJS - $注入(inject)器 :modulerr Module Error in angular. js:36

javascript - 有条件地在 Angular Directive(指令)中加载模板

javascript - Html 问题 Iframe,Canvas

javascript - 编辑简单网站模板的表单不起作用