AngularJS + Bootstrap Dropdown:无法在ng-repeat中进行ng-click

时间:2013-02-26 13:21:23

标签: drop-down-menu twitter-bootstrap angularjs ng-repeat

我正在尝试使用Bootstrap Dropdown和AngularJS创建一个选择器。

http://jsfiddle.net/qbjfQ/

<li ng-repeat="item in list"><a ng-click="current = item">Dynamic set {{item}}</a></li>

当我在列表中静态使用ng-click时,它工作正常(例4和5) 但是当我在ng-repeat中使用ng-click时,它不会更新值(例1到3)

我该怎么办?

3 个答案:

答案 0 :(得分:27)

指令范围界定是一个已知问题。您可以阅读文章The Nuances of Scope Prototypal Inheritance以了解有关角度js中范围的更多信息。

您需要将ng-repeat更改为

<li ng-repeat="item in list">
  <a ng-click="$parent.current = item">
    Dynamic set {{item}}
  </a>
</li>

演示:Fiddle

有关问题的解释,您可以阅读my answerthis question

答案 1 :(得分:3)

一种选择是在ng-click

中使用setter函数

HTML:

<li ng-repeat="item in list"><a ng-click="setCurrent( item)">Dynamic set {{item}}</a></li>

JS

function MyCtrl($scope) {

    $scope.list = [1,2,3];
    $scope.setCurrent=function(val){
         $scope.current =val;
    }    
    $scope.current = 0;    
}

DEMO:http://jsfiddle.net/qbjfQ/2/

答案 2 :(得分:1)

有一个angularjs指令正是这样做的:https://gist.github.com/andyvr/5205764

以下是带有示例的jsfiddle:http://jsfiddle.net/M32pj/1/

Sample: 
<select ng-model="example1" bs-selectbox>
 <option value="1">One</option>
 <option value="2">Two</option>
</select>