2016-05-23 29 views
0

我有一個<select>如下:在select元素中調用函數以填充ngOptions源代碼?

<div ng-show="myCtrl.name == 'Jack'"> 
     <select ng-model="myCtrl.selectedValue" ng-options="value.id as value.title for value in myCtrl.valueDrpValues"> 
      <option value=""> Select One ...</option> 
     </select> 
</div> 

而在myController.js,我有應填寫myCtrl.valueDrpValues的功能。我如何從select標籤調用這個函數?我測試了ng-init,但沒有奏效。另外,我從ng-option中調用了該函數,但它也不起作用。 (如下:)

ng-options="value.id as value.title for value in definitionCtrl.fillValueDrp()" 

回答

0

您可以使用ng-init

調用你的函數那裏,你的陣列將被填充,例如像這樣:

<div ng-init="fillValueDrp()"> 
    <div ng-show="myCtrl.name == 'Jack'"> 
     <select ng-model="myCtrl.selectedValue" ng-options="value.id as value.title for value in myCtrl.valueDrpValues"> 
      <option value=""> Select One ...</option> 
     </select> 
    </div> 
</div> 
+0

@Elnaz是這樣有用嗎? –

+0

不,它不。我以其他方式解決了這個問題(改變了另一個相關元素 - 這會導致更改myCtrl.name值 - 我添加了一個if條件來檢查名稱,如果條件結果爲true,則調用該函數)。但是我無法用你的和SSH的答案來解決這個問題,也不知道爲什麼。在調試模式下,函數不再被調用。我加了一個;到ng-init結束,沒有任何事情發生。 – Elnaz

0

嘗試。

var app = angular 
 
    .module('MyApp', [ 
 
    ]) 
 
.controller('Main', ['$scope', function ($scope) { 
 
    var self = this; 
 
    self.items = []; 
 
    self.name = "Jack"; 
 
    
 
    self.fillValueDrp = function(){ 
 
    for(var i=0 ;i < 5; i++){ 
 
     self.items.push({"id":i,"title":i}); 
 
     } 
 
    } 
 

 
}])
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div class="main-content" ng-app="MyApp" ng-controller="Main as myCtrl"> 
 
     <div ng-show="myCtrl.name == 'Jack'" ng-init= "myCtrl.fillValueDrp()"> 
 
     <select ng-model="myCtrl.selectedValue "ng-options="value.id as value.title for value in myCtrl.items"> 
 
      <option value=""> Select One ...</option> 
 
     </select> 
 
</div> 
 
    </div>