アプリケーション ファイルの読み込みに ocLazyLoad を使用する基本的な Angular.js アプリがあります。sbAdminApp テンプレートのスケルトンを使用しています。
私の問題は、ng-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) がスコープで未定義であることがわかりましたが、値を関数ではなく文字列に変更すると、スコープの値は正しくなります。
