Javascript 如何修复从正在更改select列表的函数传递的意外参数?

Javascript 如何修复从正在更改select列表的函数传递的意外参数?,javascript,angularjs,data-binding,angularjs-directive,angularjs-scope,Javascript,Angularjs,Data Binding,Angularjs Directive,Angularjs Scope,指令码 .directive('inputSelect', function() { return { templateUrl: 'someTemplate.html', restrict: 'E', scope: { ngModel: '=', ngChange: '&', options: '=' }

指令码

.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()
的参数是
未定义的
,或者它包含正确的值,这种行为是意外的和随机的。

您的模板应该通过传递JSON格式的参数来调用方法,如
ng change=“ngChange({someModel:ngModel})”
from指令

确保在从指令调用函数时,您应该传递参数,键应该是函数参数名称,如下所示
someModel
,然后传递值,如下所示its
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>


现在,如果我想将多个参数传递给
someFunction()
,另一个参数是同一控制器中的某个完全不同的模型,应该怎么做?@VishwajeetVatharkar您的模板应该传递它。但是在这种情况下,您如何考虑更多的参数。您能给我一些示例吗?现在,同样,上述plunk的问题是,
differentModel
是控制器中的不同模型,它可以有其他名称,如
someOtherDifferentModel
,在这种情况下,代码中断,该怎么办?@VishwajeetVatharkar你成功了,兄弟。太棒了。你太快了learner@VishwajeetVatharkar您对将方法传递给指令和从带参数的指令调用函数有一些误解..我不能在这里解释每件事,,您应该去看这段视频