我有一个元素列表,我想通过单击折叠到单个选定元素。我无法让控制器上的代码刷新列表。我究竟做错了什么?我认为更改 $scope 会使视图重新加载。
我通过更改视图上引用的 $scope 变量使其工作。所以我的猜测是视图上引用的变量的处理方式与任何其他 $scope 属性不同。那正确吗?
AptListCtrl = ($scope) ->
console.log apt_selected
if $scope.apt_selected?
$scope.apts = [$scope.apt_selected]
else
$scope.apts = apts
$scope.aptClick = ($event, apt) ->
if $scope.apt_selected?
if $scope.apt_selected is apt
$scope.apt_selected = null
else
$scope.apt_selected = apt
else
$scope.apt_selected = apt
$('#selected_apt').html('Selected: ' + apt.title)
$scope.$watch('apt_selected', (newv, oldv, scope)->
console.log 'new'
console.log newv
console.log 'old'
console.log oldv
)
$scope.$digest()
<ul class="list-group" ng-controller = "AptListCtrl">
<li class="list-group-item" ng-repeat = "apt in apts"
ng-click="aptClick($event, apt)" ng-model = "apt_selected">
<a href="#">{{apt.marker_text}}</a>
</li>
</ul>