2016-05-17 68 views
4

我正在使用角度選擇框,它看起來像ng-change函數永遠不會被調用。這是選擇的代碼:我已經在發生了。控制器功能做所需的最小簡化了代碼ng-change函數沒有被調用,沒有錯誤?

<select 
    data-ng-options="choice.id as choice.singular for choice in model.doseUnitChoices" 
    data-ng-model="ucumId" 
    data-ng-change="updateForm()" 
    class="form-control input-sm"> 
    <option value=""></option> 
</select> 

updateForm: function(){ 
    console.log('test'); 
    }, 

到目前爲止,一切工作像正常時,下拉顯示所有可用的選項,但是當我在下拉列表中選擇任何選項時,它立即變回到最後一個選項,這可能意味着什麼,並且從不調用更改功能,並且在控制檯中不出現錯誤?關於如何調試此問題並找出最新錯誤的任何想法?

更新:有趣的是,我發現,雖然檢查頁面上的元素實際上所有的選擇元素被列爲選中,也許有問題與數據被用作模型?望着它

+0

只是小Q,一定要綁定'updateForm'到'$ scope'? –

+0

是的控制器文件頂部的函數上面我們有「angular.extend($ scope,{」,我成功地擊中並使用其他onclick事件範圍內的其他函數,它只是這個選擇框似乎不能 –

+0

好的,只是想確定是因爲它是第一個彈出的東西 –

回答

3

我發現,這個問題正被兩個問題所引起的問題的範圍:

  1. ucumId也不存在這個選擇是被稱爲時候,我的猜測引起的一切選擇選項是以某種方式設置爲選中?
  2. 因爲上述錯誤導致所有選項被選中,無論我在選擇中做了什麼,它從未更新過值,因此沒有發生變化?

反正確保 'ucumId' 存在固定的我是有這個問題,

2

我只是試圖複製它,並與最少量的代碼,它工作正常。

<html> 
<body ng-app="app" ng-controller="myController"> 
    <select 
     data-ng-options="choice as choice.label for choice in model.doseUnitChoices" 
     data-ng-model="ucumId" 
     data-ng-change="updateForm()" 
     class="form-control input-sm"> 

     <option value=""></option> 
    </select> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js "></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-animate.min.js "></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-aria.min.js "></script> 
    <script> 
     angular.module("app",[]).controller("myController", myController) 

     function myController($scope) { 
      $scope.ucumId = ""; 

      $scope.updateForm = function(){ 
      console.log('test'); 
      }; 

      $scope.model = {} 

      $scope.model.doseUnitChoices = [ 
       {id: 1, label: "one" }, 
       {id:2, label: "two" } 
      ] 

     } 
    </script> 
</body> 
</html> 

我懷疑,要麼有一個小錯字的地方,updateForm某處或重新定義你的控制器取得了一些重新定義。我建議配對實際的代碼,並逐件刪除,直到你達到某個地方工作或類似的地步。

+0

實際上沒有'Model'是我們在控制器和更新表單中使用的$ scope變量是$ scope函數 –

+2

此時codepen可能會很棒。 :) –