Javascript 使用ng repeat设置$scope值时出现问题-值未更新

Javascript 使用ng repeat设置$scope值时出现问题-值未更新,javascript,angularjs,Javascript,Angularjs,使用ng repeat设置$scope值时,我似乎遇到了一些问题 以下是控制器中的$scope变量 $scope.selectedDate = "25.04.2014"; $scope.availableDates = [ {"date":"25.04.2014","day":"Fri", "hasDiscount":false}, {"date":"26.04.2014","day":"Sat", "hasDiscount":false}, {"date":"27.04.201

使用
ng repeat
设置
$scope
值时,我似乎遇到了一些问题

以下是控制器中的$scope变量

    $scope.selectedDate = "25.04.2014";
    $scope.availableDates = [
{"date":"25.04.2014","day":"Fri", "hasDiscount":false},
{"date":"26.04.2014","day":"Sat", "hasDiscount":false},
{"date":"27.04.2014","day":"Sun", "hasDiscount":false},
{"date":"28.04.2014","day":"Mon", "hasDiscount":false}
];
以下是“我的HTML”视图中的重复步骤:

<div class="col-xs-2 no-padding" data-ng-repeat="days in availableDates">
    <div
        class="square-but"
        data-ng-click="selectedDate = days.date"
        data-ng-class="{ 'date-choice-selected': selectedDate === days.date }">
        <span>{{ days.day }}</span>
        <span>{{ days.date.substring(0, days.date.length - 5) }}</span>
        <div class="discount" data-ng-show="days.hasDiscount"></div>
    </div>
</div>
但是单击子Div时,从未触发/调用此
$watch
。我做错了什么?
ng repeat
是否引入了新的$scope?我是否需要
$broadcast
/
$emit

提前感谢。

在创建自己的作用域时,您应该使用
$parent.selectedDate
而不是HTML中的
selectedDate

来自文档(我的)

ngRepeat指令对集合中的每个项实例化一次模板。每个模板实例都有自己的作用域

代码


{{days.day}
{{days.date.substring(0,days.date.length-5)}

我想我爱你!因此,ng repeat添加了一个子$scope?@MikeSav,ngRepeat创建自己的scope更好地远离
$parent
。将
selectedDate
放入对象
{selectedDate:null}
,然后使用
符号进行绑定。
$scope.$watch('selectedDate', function () {
    console.log('selectedDate Change');
    $scope.someHttpThing();
});
<div class="col-xs-2 no-padding" data-ng-repeat="days in availableDates">
    <div
        class="square-but"
        data-ng-click="$parent.selectedDate = days.date"
        data-ng-class="{ 'date-choice-selected': $parent.selectedDate === days.date }">
        <span>{{ days.day }}</span>
        <span>{{ days.date.substring(0, days.date.length - 5) }}</span>
        <div class="discount" data-ng-show="days.hasDiscount"></div>
    </div>
</div>