Проблема в том, что ng:repeat
создает новую область, поэтому вы устанавливаете selected
в текущей области, но диапазон привязан к родительской области.
Существует несколько решений, определяющих методвероятно, лучший:
<div ng:controller="MyController">
<p>selected: {{selected.name}}</p>
<ul>
<li ng:repeat="artist in list">
<button ng:click="select(artist)" >{{artist.name}}</button>
</li>
</ul>
</div>
И контроллер:
function MyController() {
var scope = this;
scope.select = function(artist) {
scope.selected = artist;
};
scope.list = [{
name: "Beatles",
songs: ["Yellow Submarine", "Helter Skelter", "Lucy in the Sky with Diamonds"]
}, {
name: "Rolling Stones",
songs: ["Ruby Tuesday", "Satisfaction", "Jumpin' Jack Flash"]
}];
}
Вот ваш пример работы с jsfiddle: http://jsfiddle.net/vojtajina/ugnkH/2/