我有一個範圍變量'$ scope.searchType',它默認等於'createdAt'。在我的HTML我有改變的範圍變量值的選項:
<ul class="dropdown-menu" role="menu">
<li><a ng-click="searchType = 'Anything'">Anything</a></li>
<li><a ng-click="searchType = 'Payment'">Payment</a></li>
<li><a ng-click="searchType = 'Total'">Total</a></li>
<li><a ng-click="searchType = 'Tax'">Tax</a></li>
<li><a ng-click="searchType = 'Payment Method'">Payment Method</a></li>
</ul>
在我的控制,我有以下監聽變化:
$scope.$watch('searchType', function(newValue) {
if(newValue == 'Payment') {
$scope.searchTypeFilter = 'id';
$scope.searchFiltered = true;
} else if(newValue == 'Total') {
$scope.searchTypeFilter = 'total';
$scope.searchFiltered = true;
} else if(newValue == 'Tax') {
$scope.searchTypeFilter = 'tax';
$scope.searchFiltered = true;
} else if(newValue == 'Payment Method') {
$scope.searchTypeFilter = 'paymentType';
$scope.searchFiltered = true;
} else {
$scope.searchTypeFilter = '';
$scope.searchFiltered = false;
$scope.search = '';
}
}, true);
出於某種原因,$範圍$手錶永遠不會調用。我無法弄清楚它以前是如何不起作用的。這是'$ scope.searchType'聲明:
$scope.sortType = 'createdAt';
貴'下拉-menu' HTML被包裹在你的推杆了'$ watch'控制器? –
你確定手錶和下拉菜單在同一範圍內嗎? – ajmajmajma
是的,我相信他們自$ scope。$ watch在頁面加載時輸入一次。但之後它永遠不會再運行。 – Niraj