ng-click事件不适用于ocLazyLoad

时间:2016-06-05 03:20:59

标签: javascript angularjs angularjs-ng-click oclazyload

我有一个基本的Angular.js应用程序,它使用ocLazyLoad来加载应用程序文件。我正在使用sbAdminApp模板的骨架。

我的问题是,当我使用带有ng-click事件的模板时,不会触发click事件。这不是范围问题,因为当我将函数的内容打印到视图时会显示它。

以下是我的一些代码:

使用ocLazyLoad加载文件:

$stateProvider.state('dashboard.importLotteries', {
    templateUrl: '/Scripts/app/views/importLotteries.html',
    url: '/importLotteries',
    controller: 'LotteriesCtrl',
    resolve: {
        loadMyFiles: function ($ocLazyLoad) {
            return $ocLazyLoad.load({
                name: 'sbAdminApp',
                files: [
                    '/Scripts/app/scripts/services/lotteriesService.js',
                    '/Scripts/app/scripts/controllers/lotteries.js'

                ]
            })
        }
    }
}

这是importLotteries.html模板文件:

<!-- /.row -->
<div class="row">
    <div class="col-lg-12">
        <div class="panel panel-default">
            <div class="panel-heading">
                Import Lotteries
            </div>
            {{importLotteries.toString()}}
            <div class="panel-body">
                <input type="button" ng-click="importLotteries()"  value="Import"/>

                <span ng-model="importStatus">
                </span>
            </div>
        </div>
            <!-- /.panel -->
        </div>
    <!-- /.col-lg-12 -->
</div>

这是控制器的代码:

'use strict';
angular.module('sbAdminApp')
  .controller('LotteriesCtrl', function ($scope, lotteriesService) {

      $scope.importLotteries = function () {

          alert("importing");
          $scope.importStatus = "Loading...";
      };

  });

结果视图如下所示:

enter image description here

正如您所看到的,该功能存在于范围内,但点击事件未触发,我也没有收到任何错误。

我尝试在线搜索解决方案已经有一段时间了,但是找不到解决方案,所以非常感谢任何帮助!

在进一步调查此问题后,我发现范围中的事件函数(importLotteries)未定义,但是当我将值更改为字符串而不是函数时,范围值是正确的。

1 个答案:

答案 0 :(得分:0)

尝试将ng-href或href附加到链接,它将被触发。

TextArea

<强>来源:

[1] Angular ng-click with call to a controller function not working