10

私はこのコードスニペットを持っています:

<ul>
    <li ng-repeat="message in messages">
        <button ng-click="send()">Send</button>
    </li>
</ul>

$scope.send = function(){
    // not working (message undefined)
    alert($scope.message.text);
    // working 
    alert($scope.messages[0].text);
};

私はなぜなのか理解していない:

alert($scope.message.text);

動作しません。ng-repeat が新しいスコープを作成していると思いました。

4

2 に答える 2

14

ng-repeat新しいスコープを作成するのは本当です。ただし、コントローラー内で $scope を実行しても、そのスコープにアクセスすることはできません。代わりに、次のようにすることができます。

<button ng-click="send(message)">Send</button>

そしてあなたのJSで:

$scope.send = function(message){    
    alert(message.text);    
};
于 2013-08-14T09:54:08.393 に答える
-1

そのメッセージは、ビュー側(index.html)であるローカル側のみにアクセスします。コントローラ側にアクセスしないでください。しかし、メッセージには send(message) という引数が渡されます。

于 2013-08-21T10:18:57.090 に答える