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>