3

http://plnkr.co/edit/fFSoLmPFDBfNc2oOczZr?p=preview如何解決從正在對選擇列表進行ng更改的函數傳遞的意外參數?

指令代碼

.directive('inputSelect', function() { 
     return { 
      templateUrl: 'someTemplate.html', 
      restrict: 'E', 
      scope: { 
      ngModel: '=', 
      ngChange: '&', 
      options: '=' 
      } 
     }; 
     }) 

控制器代碼

$scope.someFunction = function(name) { 
      console.log(name) 
      }; 
    $scope.colors = [{ 
     name: 'black', 
     shade: 'dark' 
     }, { 
     name: 'white', 
     shade: 'light', 
     notAnOption: true 
     }, { 
     name: 'red', 
     shade: 'dark' 
     }]; 

模板代碼

<select ng-model="ngModel" ng-change="ngChange()" 
    ng-options="option.name for option in options"> 
</select> 

代碼指令的使用

<input-select ng-model="someModel" ng-change="someFunction(someModel.name)" options="colors"></input-select> 

因此,傳遞給someFunction()的參數是undefined或者它包含正確的值,該行爲是意外的並且是隨機的。

回答

2

你的模板應通過指令傳遞參數以JSON格式像ng-change="ngChange({someModel: ngModel})"調用一個方法

確保在調用從指導作用,你應該通過參數和關鍵應該是函數的參數名稱這裏是someModel和然後傳遞值喜歡這裏的ngModel

標記

<input-select ng-model="someModel" ng-change="someFunction(someModel)" options="colors"></input-select> 

指令模板

<select ng-model="ngModel" ng-change="ngChange({someModel: ngModel})" 
    ng-options="option.name for option in options"> 
</select> 

Working Plunkr

+0

現在,如果我想傳遞一個以上的參數,以'someFunction()',另一個參數是在同一個控制器一些完全不同的模式,應該說,它是完成? –

+0

@VishwajeetVatharkar你的模板應該通過它..但在這種情況下,你怎麼能想到更多的參數..你能給我舉個例子嗎? –

+0

我懂了! http://plnkr.co/edit/1VfsCMFbx3LuagebaYje?p=preview –

相關問題