2013-02-26 51 views

回答

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

或使用指南:所有范围参考应包含一个。 (dot) Mike 2013-02-26 20:23:34

+2

原始小提琴烂掉了(因为angular-ui库的路径改变了)。这里是一个更新[小提琴](http://jsfiddle.net/qbjfQ/288/)。 – nmgeek 2015-07-14 18:05:19

3

一种选择是使用中的setter函数ng-click

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/

+0

小提琴不再工作fyi – Ammar 2017-09-01 19:34:56

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> 
+0

我想使用这个,但我如何重新加载指令。我的选择来自远程来源。 – 2013-05-31 10:37:02

+0

请在ordre中升级您的源代码以$编译您的模板。它不适用于AngularJS 1.2+。 谢谢。 – 2015-10-29 09:11:59