ng-click 事件不适用于 ocLazyLoad
Posted
技术标签:
【中文标题】ng-click 事件不适用于 ocLazyLoad【英文标题】:ng-click event not working with ocLazyLoad 【发布时间】:2016-10-04 22:08:21 【问题描述】:我有一个基本的 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...";
;
);
结果视图如下所示:
如您所见,该函数存在于范围内,但点击事件未触发,我没有收到任何错误。
我尝试在线搜索解决方案有一段时间了,但找不到,因此将不胜感激!
在进一步调查该问题后,我发现事件函数 (importLotteries) 在作用域中未定义,但是当我将值更改为字符串而不是函数时,作用域值是正确的。
【问题讨论】:
@HanletEscaño 不,不应该。如果您使用的是 controllerAs 语法,那么您只需添加一个前缀,而他不是 - 而且您可能无论如何都不想将其命名为 $scope。 Shai,你怎么知道它没有开火?你在里面设置断点了吗? @Shai 你怎么知道是 ocLazyLoad 问题?您是否尝试过更早地加载文件(lotteriesService.js、lotteries.js)而不是使用 ocLoazyLoad 加载它们? @matmo ,是的,我设置了一个断点并添加了一个未执行的警报命令。 您能否解决问题? @ShaiAharoni 我想你可以分享一个 plnkr 或你的问题的小提琴,它会更容易调试 【参考方案1】:尝试将 ng-href 或 href 附加到链接,它会被触发。
<input type="button" ng-click="importLotteries()" ng-href='#' value="Import"/>
来源:
[1]Angular ng-click with call to a controller function not working
【讨论】:
但他没有使用链接,而是输入,它不应该有 href 属性或 ng-href以上是关于ng-click 事件不适用于 ocLazyLoad的主要内容,如果未能解决你的问题,请参考以下文章
Flot legendFormatter 不适用于 ng-click
添加 href 属性后,ng-click 不适用于 Internet Explorer 中的锚标记
ng-repeat 内的 ng-click 不适用于 :focus 和 display