【发布时间】:2014-03-10 15:40:47
【问题描述】:
我有一个嵌入了几个选定按钮的选项卡:
<tab id="graphTab" heading="Graph">
<div class="analyze-select centered">
<br></br>
<h4>Filter by period:</h4>
From:
<select ng-model="startQuarter" ng-options="quarter for quarter in quarters"></select>
<select ng-model="startYear" ng-options="year for year in years"></select>
To:
<select ng-model="endQuarter" ng-options="quarter for quarter in quarters"></select>
<select ng-model="endYear" ng-options="year for year in years"></select>
<button class="btn btn-primary" type="submit" ng-click="filterTime()">Filter</button>
</div>
</tab>
我的控制器如下所示:
$scope.startYear ='';
$scope.startQuarter = '';
$scope.endYear = '';
$scope.endQuarter = '';
$scope.$watch('startYear',function(){
console.log('startYear has changed!');
});
$scope.$watch('endYear',function(){
console.log('endYear has changed!');
});
$scope.$watch('startQuarter',function(){
console.log('startQuarter has changed!');
});
$scope.$watch('endQuarter',function(){
console.log('endQuarter has changed!');
});
虽然相同的方案适用于其他select 按钮,但我认为它不适用于嵌入选项卡中的按钮。问题是范围内的那些变量没有被“监视”,并且角度似乎没有记录任何变化(也就是说,当我在下拉菜单中选择不同的值时,控制台上没有打印任何内容)。
这取决于<tab> 还是我错过了其他东西?
更新:
因此,如果我将三个selects 移到<tab> 元素之外,$watch 将再次起作用。
为什么<tab> 元素对$watch 来说是个问题?
【问题讨论】:
-
<tab>是否正在构建?有指令吗? -
没有
<tab>的指令。一切都在 html 中编码。
标签: javascript angularjs controller