我有一个基本的 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) 在范围中未定义,但是当我将值更改为字符串而不是函数时,范围值是正确的。