3

アプリケーション ファイルの読み込みに 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) がスコープで未定義であることがわかりましたが、値を関数ではなく文字列に変更すると、スコープの値は正しくなります。

4

1 に答える 1

0

Try attaching a ng-href or href to the link and it'll be fired.

<input type="button" ng-click="importLotteries()" ng-href='#' value="Import"/>

Source:

[1] Angular ng-click with call to a controller function not working

于 2016-06-17T08:59:25.670 に答える