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
,然后传递值,如下所示itsngModel
标记
<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您对将方法传递给指令和从带参数的指令调用函数有一些误解..我不能在这里解释每件事,,您应该去看这段视频