如何将ng-model作为参数传递给控制器

时间:2018-02-16 10:58:33

标签: javascript html angularjs html5 ionic-framework

我怎样才能将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

3 个答案:

答案 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属性用作模型