如何为 select 列表的自定义指令实施 ng-change?
How to implement ng-change for custom directive for select list?
我的指令使用代码
<input-select ng-model="someModel" ng-change="someFunction()"
options="countries"></input-select>
我的指令代码
.directive('inputSelect', function () {
return {
templateUrl: 'someTemplate.html',
restrict: 'E',
scope: {
ngModel: '=',
ngChange: '='
}
};
});
我的指令模板
<select
ng-model="ngModel" ng-init="ngModel "
ng-options="option[optionId] as option[optionName] for option in options"
ng-change="ngChange">
</select>
因此,当所选项目更改时,函数someFunction()
被要求无限时间(尽管更改一次),应更改的内容以确保someFunction()
get 只被调用一次(someFunction()
是使用该指令的控制器范围内的一个函数)
[ 我确实尝试过使用 &
和 @
作为 ngChange 的范围类型,如果使用它们,somefunction()
不会被触发。 ]
您应该使用用于表达式的 &
,并且您可以从标记中调用该方法,例如 ngChange()
而不是 ngChange
only
标记
<select
ng-model="ngModel" ng-change="ngChange()"
ng-options="option[optionId] as option[optionName] for option in options">
</select>
代码
scope: {
ngModel: '=',
ngChange: '&'
}
我的指令使用代码
<input-select ng-model="someModel" ng-change="someFunction()"
options="countries"></input-select>
我的指令代码
.directive('inputSelect', function () {
return {
templateUrl: 'someTemplate.html',
restrict: 'E',
scope: {
ngModel: '=',
ngChange: '='
}
};
});
我的指令模板
<select
ng-model="ngModel" ng-init="ngModel "
ng-options="option[optionId] as option[optionName] for option in options"
ng-change="ngChange">
</select>
因此,当所选项目更改时,函数someFunction()
被要求无限时间(尽管更改一次),应更改的内容以确保someFunction()
get 只被调用一次(someFunction()
是使用该指令的控制器范围内的一个函数)
[ 我确实尝试过使用 &
和 @
作为 ngChange 的范围类型,如果使用它们,somefunction()
不会被触发。 ]
您应该使用用于表达式的 &
,并且您可以从标记中调用该方法,例如 ngChange()
而不是 ngChange
only
标记
<select
ng-model="ngModel" ng-change="ngChange()"
ng-options="option[optionId] as option[optionName] for option in options">
</select>
代码
scope: {
ngModel: '=',
ngChange: '&'
}