AngularJS - 范围不是ng-repeat的ng-click事件中预期的范围

时间:2013-08-14 09:53:17

标签: angularjs scope angularjs-controller

我有这段代码:

<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正在创造一个新的范围。

2 个答案:

答案 0 :(得分:13)

ng-repeat创建新范围的确如此。但是您无法通过在控制器中执行$ scope来访问该范围。相反,你可以这样做:

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

在你的JS中:

$scope.send = function(message){    
    alert(message.text);    
};

答案 1 :(得分:-1)

该消息仅访问作为视图侧(index.html)的本地端。 Dosn,t访问控制器端。但是消息是传递的参数,即发送(消息)。