我有这个指令。这是简化版本,只有部分不起作用:
app.directive("adminSelect", function () {
return {
restrict: 'A',
require: 'ngModel',
scope: {
ngChange: "&",
ngModel: "=",
options: "="
},
template: '<select ng-change="ngChange()" ng-model="ngModel" ng-options="item.id as item.name for item in options">',
controller: function ($scope, $element, $attrs) {
}
};
});
当我这样调用这个函数时:
<div admin-select
ng-change="ctrl.typeChanged()"
ng-model="ctrl.configService.admin.examTypeId"
options="ctrl.examType.dataPlus"></div>
如何获取模型的当前值并将其提供给ctrl.typeChanged()函数?
我已经尝试过了:
typeChanged = function () {
alert(self.configService.admin.examTypeId)
};
但是,它没有提供刚刚选择的值。它始终会警告所选的先前值。
答案 0 :(得分:1)
select
的值将存储在您自己的ng-Model
中设置的范围变量中。现在,如果你想要的是拥有一个你希望在值改变时触发的函数,只需在你的指令的控制器中定义该函数,然后从ng-change
的{{1}}调用它。
例如:
select
我会对您用于指令的属性的名称有点小心,因为它们可能与angular js指令冲突。
在指令定义中尝试使用它:
template: '<select ng-change="myChangeFunct()" ng-model="mySelectVal" ng-options="item.id as item.name for item in options">',
controller: function ($scope, $element, $attrs) {
$scope.myChangeFunct = function(){ alert($scope.mySelectVal); };
}
当你实例化它时:
app.directive("adminSelect", function () {
return {
restrict: 'A',
require: 'ngModel',
scope: {
adminChange: "&",
adminModel: "=",
adminOptions: "="
},
template: '<select ng-change="adminChange()" ng-model="adminModel" ng-options="item.id as item.name for item in adminOptions">',
controller: function ($scope, $element, $attrs) {
}
};
});