2017-01-30 33 views
0
<select id = "email_templates" name = "email_templates" class="chosen-select input-md form-control" ng-change = "alert('template selected');"> 
<option value="0">No template selected</option> 
<option value="1">Template 1</option>              
</select> 

我得到以下錯誤。ng-change不起作用,指令無法找到

Error: [$compile:ctreq] Controller 'ngModel', required by directive 'ngChange', can't be found! 

所有其他的角度指令似乎工作正常。我究竟做錯了什麼?

回答

4

你需要有NG-模型的選擇,

<select id = "email_templates" ng-model="selected" name = "email_templates" class="chosen-select input-md form-control" ng-change = "alert('template selected');"> 
<option value="0">No template selected</option> 
<option value="1">Template 1</option>              
</select> 
+0

有以ng-model的錯字= 「」 選擇」。一個不必要的引號:) – Roux

0

NG-變化reuires NG-模型,以便使用NG-模型NG-變化

<select id = "email_templates" ng-model="selected" name = 
    "email_templates" class="chosen-select input-md form-control" ng- 
     change = "alert('template selected');"> 
     <option value="0">No template selected</option> 
     <option value="1">Template 1</option>              
    </select> 
0

ng-change documentation

當輸入 值的改變導致一個新的VAL表達ngChange時才計算你要致力於模型。

...

注意,該指令要求ngModel存在。

ng-change創建模型的變量觀察家。所以,你必須添加一個ng-model到你的選擇中,以便告訴Angular你觀察到了哪個變量的變化。

<select ng-model="selectedEmail" ng-change="alert('template selected');"> 
0

<select id = "email_templates" name = "email_templates" class="chosen-select input-md form-control" ng-change = "alert('template selected');"> 
 
<option value="0">No template selected</option> 
 
<option value="1">Template 1</option>              
 
</select>

,而不是這個,你可以在選擇使用ngClick。按這個問題Responding to drop down selection change in angular without model binding

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script> 
 
<select id = "email_templates" name = "email_templates" class="chosen-select input-md form-control" > 
 
<option value="0">No template selected</option> 
 
<option value="1" ng-click="alert('template selected');">Template 1</option>              
 
</select>