2013-02-26 9 views

Odpowiedz

27

Jest to znany problem z zakresu w dyrektywach. Możesz przeczytać artykuł The Nuances of Scope Prototypal Inheritance, aby dowiedzieć się więcej o zakresie w kątowym js.

Trzeba zmienić ng-repeat do

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

Demo: Fiddle

Dla wyjaśnienia problemu, można przeczytać my answer do this question

+1

Lub użyj wytycznej: wszystkie odniesienia do zakresu powinny zawierać. (kropka) Mike

+2

Oryginalne skrzypce zgniły (ponieważ zmieniła się ścieżka biblioteki kątowej-ui). Oto zaktualizowany [Fiddle] (http://jsfiddle.net/qbjfQ/288/). – nmgeek

3

Jedną z opcji jest użycie funkcji seter zasięgu 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

Fiddle już nie działa fyi – Ammar

1

Jest takie angularjs dyrektywa, która robi dokładnie to: https://gist.github.com/andyvr/5205764

Oto jsfiddle z przykładów: http://jsfiddle.net/M32pj/1/

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

Próbuję użyć tego, ale jak przeładować dyrektywę. Moje opcje pochodzą ze zdalnego źródła. –

+0

Proszę zaktualizuj swój kod źródłowy w porządku, aby $ skompilować szablon. To nie działa z AngularJS 1.2+. Dzięki. –