我怎样才能将ng-model的值作为参数传递给html中的控制器中的函数。我试图将ng-model作为字符串传递给控制器,但它没有;任何人都可以告诉我如何工作这样做。
HTML:
<input stopccp decimalpoint
ng-model="vm.product.rate"
placeholder="0"
type="number"
ng-change="vm.fillStarted()"
maxlength="5"
ng-keydown="vm.checkMaxLength(5, vm.product.rate)"
ng-click= "vm.hideScrollContent()"/>
控制器:
var vm = this;
function checkMaxLength (maxLength, model) {
$log.log('checkMaxLength got called', maxLength);
$log.log('model is', model);
$log.log('model value', model.value);
// if (vm.product.rate.length === maxLength) {
// vm.product.rate.value = vm.product.rate.value.slice(0, -1);
// }
}
日志:
checkMaxLength got called 5
model is
model value undefined
答案 0 :(得分:0)
您的代码按预期工作。当你第一次在ng-keydown
上调用方法时,你将看不到任何价值。对于第二个输入,您应该看到第一个输入值
<input stopccp decimalpoint
ng-model="vm.product.rate"
placeholder="0"
type="number"
ng-change="vm.fillStarted()"
maxlength="5"
ng-keydown="vm.checkMaxLength(5, vm.product.rate)"
ng-click= "vm.hideScrollContent()"/>
function checkMaxLength (maxLength, model) {
$log.log('checkMaxLength got called', maxLength);
$log.log('model is', model);//enter 123 in input. You should see 12 here
$log.log('model value', model.value);// It is wrong as model.value will always
be undefined
}
使用ng-keyup而不是ng-keydown来查看日志中的输入内容。
答案 1 :(得分:0)
你的代码看起来完全正常,我想问题就在这里
var vm = this;
然后你需要为产品赋值,否则它将是未定义的。
this.product = {};
var vm = this;
答案 2 :(得分:0)
您应该只能在controller
。
因此,请将ng-keydown
更改为:
ng-keydown="vm.checkMaxLength(5)"
然后在checkMaxLength
函数中使用:
function checkMaxLength (maxLength) {
$log.log('checkMaxLength got called', maxLength);
$log.log('model is', vm.product.rate);
}
当然,在控制器内你应该有你的产品对象init:
vm.product = {};
以便将rate
属性用作模型