我有一个使用ocLazyLoad加载应用程序文件的基本Angular.js应用程序。我使用的是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...";
};
});结果视图如下所示:

如你所见,函数存在于作用域中,但是click事件没有触发,我没有得到任何错误。
我试着在网上搜索一段时间的解决方案,但没有找到,所以任何帮助都将不胜感激!
进一步研究这个问题后,我发现在作用域中没有定义事件函数(importLotteries),但是当我将值更改为字符串而不是函数时,作用域的值是正确的。
发布于 2016-06-17 16:59:26
尝试将ng-href或href附加到链接,它将被触发。
<input type="button" ng-click="importLotteries()" ng-href='#' value="Import"/>来源:
https://stackoverflow.com/questions/37638136
复制相似问题