0

我試圖使用<select>標籤在HTML如下創建一個下拉菜單,平變化在選擇標籤不會調用函數

<select id="Parameter1" onchange="function1()"> 
    <option value = "0105" name = "Frequency">Frequency</option> 
    <option value = "0106" name = "Motor Current">Motor Current</option> 
</select> 

的angularJS功能我想打電話是如下,

$scope.function1 = function(){ 
    var paramId = document.getElementById("Parameter1").value; 
} 

結果導致一個錯誤,說明:Uncaught ReferenceError: function1 is not defined

請幫助我。

回答

0

使用ng-change指令而不是onchange作爲function1在控制器的scope下。

var app = angular.module('myApp', []); 
 
app.controller('ctrl', function($scope) { 
 
    $scope.value = '0105'; 
 
    $scope.function1 = function() { 
 
    alert($scope.value); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script> 
 
<div ng-app='myApp' ng-controller='ctrl'> 
 
    <select id="Parameter1" ng-change="function1()" ng-model='value'> 
 
    <option value="0105" name="Frequency">Frequency</option> 
 
    <option value="0106" name="Motor Current">Motor Current</option> 
 
    </select> 
 
    {{value}} 
 
</div>

要使用onchange,你的處理函數必須是全球scope

編輯下:還要考慮function1的實施,雖然處理的角度,使用scope變量。

+0

其實,我有多個NG-意見,並通過添加NG-變化各方面的意見與此觀點一起相交。 這是好的,但仍然'ng-change'在下拉菜單中選擇任何值時也不起作用。 是的,它在全球範圍內。 – shoghi07

2

由於您使用AngularJS,你需要使用ng-*指令:

<select id="Parameter1" ng-change="function1()"> 
    <option value = "0105" name = "Frequency">Frequency</option> 
    <option value = "0106" name = "Motor Current">Motor Current</option> 
</select> 

ng-change屬性是AngularJS指令,並聯系您的$scope,是動態的,而onchange只是本地JavaScript事件。

這對於他們大多也是如此:

  • ng-src
  • ng-href
  • ng-click
0

嘗試ng-change指令。在純DOM中使用onchange回調。

Angular說:「當用戶更改輸入時評估給定的表達式,該表達式是立即求值的,與JavaScript onchange事件不同,後者僅在更改結束時觸發(通常,當用戶離開表單元素或按下回車鍵)」

請看:https://docs.angularjs.org/api/ng/directive/ngChange

相關問題