Angularjs - 在输入时对文本输入执行函数

时间:2015-07-31 10:41:43

标签: angularjs

我想制作一个罗马数字计算器,可以将输入数字的数字转换为数字。我理解如何将变量绑定到文本输入但我不知道如何执行函数'在它上面输入它。我该怎么做?

感谢。

2 个答案:

答案 0 :(得分:4)

$ scope.watch在文本输入的ng模型上。然后运行要在ng-model变量上执行的代码。

e.g。

// html...
<input type=text ng-model="textBox" />

// controller
$scope.$watch('$scope.textBox', function(newValue, oldValue) {
   // do stuff to the text everytime it changes
});

这个$ scope的好处。$ watch例如你不想在newValue上执行该函数,除非它是2或3个字符以上。与简单的ng-change相比,它只是让你对函数有了更多的控制。

答案 1 :(得分:4)

使用ng-change指令:here the docs

示例

在模板中

<input type="text" ng-change="yourFunction(value)" ng-model="value"/>

在控制器中

$scope.value = ""

$scope.yourFunction = function(value){
   //Put code logic here
}

编辑:

在您的情况下,您还可以创建过滤器

module.filter("convertToRomanNumber", function(){
    //Improve code logic here
    return function(input){
        var value=""; 
        for(var i=0; i<input; i++){
            value+="I"
        } 
        return value;
    }
})

并在模板中调用

 <input type="text" ng-change="yourFunction(value)" ng-model="value"/>
 {{value | convertToRomanNumber}}