我有一个基本的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)未定义,但是当我将值更改为字符串而不是函数时,范围值是正确的。
答案 0 :(得分:0)
尝试将ng-href或href附加到链接,它将被触发。
TextArea
<强>来源:强>
[1] Angular ng-click with call to a controller function not working