2014-05-19 42 views
0

我有一個應用程序有兩個單獨的選擇與綁定屬性。我希望用戶能夠更改所選選項中的選定選項,這將觸發一個功能。但函數將使用選擇的BOTH中選定選項的值發送到$ http調用以進行數據庫查詢。以下是代碼片段:ng-change不會觸發函數

HTML:

<div class="yearFilter"> 
    <label>Working Year : </label> 
    <select ng-model="filterYear" ng-options="year.code as year.code for year in filterYears | unique:'code'" ngclick="setWorkingData({{filterSport}},{{filterYear}})"> 
    </select> 
</div> 
<div class="sportFilter"> 
    <label>Working Sport : </label> 
    <select ng-model="filterSport" ng-options="sport.code as sport.desc for sport in filterSports | unique:'code'" ngclick="setWorkingData({{filterSport}},{{filterYear}})"></select> 
</div> 

JS:

var PermitsCtrl = function ($scope, $http) { 
    var init = function() { 
     $http({ 
      ... 
     }).success(function(data) { 
      ... 
      setWorkingData($scope.filterYear,$scope.filterSport); 
     }).error(function(error){ 
      ... 
     }); 
    } 
    var setWorkingData = function (year, sport) { 
     $http({ 
      url .... 
      ... 
      data : "action=2&year_code="+year+"&sport_code="+sport, 
      ... 
     }).success(function(data) { 
      $scope.workingData = data.workingData; 
     }).error(function(error) { 
      ... 
     }); 
    } 
    init(); 
} 

在加載頁面時,init()被成功觸發,它建立了選擇選項,進而觸發setWorkingData()函數,它根據調用init()函數發送的兩個選擇(filterYear和filterSport)中的值,相應地更改DOM中的其他值。到目前爲止,一切都很好。但更改select中的值不會觸發setWorkingData函數。被呈現的HTML看起來是正確的:

<select ng-model="filterYear" ng-options="year.code as year.code for year in filterYears | unique:'code'" ng-change="setWorkingData(15,FB)" class="ng-valid ng-dirty"><option value="0" selected="selected">14</option><option value="1" selected="selected">15</option></select> 

當我改變無論是在瀏覽器中選擇,對於setWorkingData()函數的參數值是正確的DOM兩種選擇呈現所選擇的選項,但功能從未被觸發。

回答

1

setWorkingData()在控制器中用私人訪問來定義。爲了它是從視圖訪問,它必須在範圍中聲明:

$scope.setWorkingData = setWorkingData; 

BTW,你不需要{{}}的論點ng-change/ng-click

ng-change="setWorkingData(filterSport, filterYear)" 
+0

這完善。謝謝@ExpertSystem! – mike