0

セマンティック UI を使用して、Web サイトを AngularJS でフォ​​ーマットしています。私のコントローラーはセットアップされており、うまく機能しています。しかし、それは私のコードのこの部分が好きではありません:

    <div class="ui piled feed segment">
        <h2 class="ui header">
            Comments
        </h2>
        <div class="event" ng-repeat = "comment in comments | reverse">
            <div class="ui green horizontal label">
                {{comment.user}}
            </div>
            <div class="content">
                <div class="summary" ng-click="doSomething()">
                    {{ comment.content }}
                </div>
            </div>
        </div>
    </div>

AngularJS コードは次のとおりです。

$scope.doSomething = function(){
    alert('blah');
};

基本的には、コンテンツがクリックされたときに doSomething() を実行したいです。しかし、何らかの理由で機能せず、次のエラーが発生します。

TypeError: undefined is not a function
    at http://localhost:3000/js/lib/angular.min.js:65:98
    at http://localhost:3000/js/lib/angular.min.js:72:222
    at http://localhost:3000/js/lib/angular.min.js:144:140
    at Object.e.$eval (http://localhost:3000/js/lib/angular.min.js:88:347)
    at Object.e.$apply (http://localhost:3000/js/lib/angular.min.js:88:454)
    at HTMLAnchorElement.<anonymous> (http://localhost:3000/js/lib/angular.min.js:144:122)
    at HTMLAnchorElement.n.event.dispatch (http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js:3:8066)
    at HTMLAnchorElement.r.handle (http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js:3:4774) 

通常、「未定義」は関数定義に問題があることを意味するため、このエラーが何を意味するのかはよくわかりませんが、ここでは何も問題はありません。このアプリのどこで ng-repeat else 内に ng-click があり、正常に動作します。セマンティックUIのせいですか?

4

2 に答える 2

0

ng-repeat 内から呼び出すことと関係があると思います。詳細は忘れましたが、ある種のスコーピングの問題です。

$scope.doSomething の代わりに、試してください

$scope.myObject = {};
$scope.myObject.doSomething = function(){//stuff};

次に、HTML 呼び出しで myObject.doSomething(); を呼び出します。

次に、私の仮定が正しく、それが実際に機能する場合は、この種のスコーピングの問題を回避するのに役立つ角度のあるプラクティスに関するこの記事を確認してください。

http://www.technofattie.com/2014/03/21/five-guidelines-for-avoiding-scope-soup-in-angular.html

于 2014-11-06T17:11:09.417 に答える