Javascript 如何在angular js中将输入值绑定到$scope对象?

Javascript 如何在angular js中将输入值绑定到$scope对象?,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我是Angular JS的新手,我想将输入值绑定到$scope对象,就像我们对输入字段使用ng bind和ng model将其值绑定到DOM(当我们在输入中键入某些内容时,值会发生变化) 我不能这样做吗?我的意思是,就像显示输入的实时文本一样,应该存储到$scope.foo.bar,因此它会打印在控制台中 以下是我正在尝试的: <script type="text/javascript"> var app = angular.module("testApp", []);

我是Angular JS的新手,我想将输入值绑定到$scope对象,就像我们对输入字段使用ng bindng model将其值绑定到DOM(当我们在输入中键入某些内容时,值会发生变化)

我不能这样做吗?我的意思是,就像显示输入的实时文本一样,应该存储到$scope.foo.bar,因此它会打印在控制台中

以下是我正在尝试的:

<script type="text/javascript">
    var app = angular.module("testApp", []);
    app.service("stringService", function(){
        this.myFunction = function(word){
            return word.toUpperCase();
        };
    });
    app.controller("control", function($scope, $location, stringService, $http){
        $scope.age=24;
        $scope.foo = {bar: "hello"};
        console.log($scope.foo.bar);
        $scope.isNumber = angular.isNumber($scope.foo.bar);
    });

</script>

<div ng-app="testApp">
    <div ng-controller="control" ng-init="obj=[{name:'vikas'}, {name: 'vijay'}, {name: 'vinay'}]; mySwitch=true">
        <form name="testForm">
            <input type="text" name="bar" ng-model="foo.bar" required>
        </form>
        <div>{{isNumber}}</div>
    </div>
</div>

var app=angular.module(“testApp”,[]);
app.service(“stringService”,function()){
this.myFunction=函数(word){
返回word.toUpperCase();
};
});
app.controller(“控制”,函数($scope、$location、stringService、$http){
$scope.age=24;
$scope.foo={bar:“hello”};
log($scope.foo.bar);
$scope.isNumber=angular.isNumber($scope.foo.bar);
});
{{isNumber}}

我可以在控制台中看到初始值(hello),在DOM中看到false。但是它不会更新。

这一行
$scope.isNumber=angular.isNumber($scope.foo.bar)仅在初始化页面时运行一次

您可以将
isNumber
更改为函数,以便多次调用

$scope.isNumber = function() {
  return angular.isNumber($scope.foo.bar);
}
在模板上调用它:

<div>{{isNumber()}}</div>    

{{isNumber()}}

虽然@Pengyy的说法非常正确,您需要将数据绑定到函数,但这只是问题的一部分

问题是
NaN
,这是一个令人困惑的数值,它不是一个数字,但具有类型
'number'
,并且一些quicks必须绑定到字符串值属性,如html中的

//常数NaN
控制台信息(NaN);
//常数NaN的类型
控制台信息(NaN类型);
//NaN不等于NaN
console.info(NaN==NaN);
//Number.isNaN检查是否存在NaN
console.info(Number.isNaN(NaN));
//Number.isNaN对于任何值都返回false,除非typeof value==“Number”
console.info(Number.isNaN({
a:[]

}));值必须更新,但您没有任何通信,您需要一个监视程序或一个触发控制台日志并检查编号的函数

将控制器更改为:-

 app.controller("control", function($scope, $location, stringService, $http){
            $scope.age=24;
            $scope.foo = {bar: "hello"};
            console.log($scope.foo.bar);
            $scope.isNumber = angular.isNumber($scope.foo.bar);
            $scope.check = function() {
                $scope.isNumber =  angular.isNumber($scope.foo.bar);
                console.log($scope.foo.bar);
                console.log($scope.isNumber);
            }
        });
和Html格式

<input type="type" name="bar" ng-model="foo.bar" ng-change="check()" required>


是否有其他可能修改foo的代码?您的代码似乎工作正常。你到底想做什么?“这一行
$scope.isNumber=angular.isNumber($scope.foo.bar);
只运行一次”
isNumber()
也只能发射一次吗?我是否需要像Parth建议的那样使用
ng change
?@VikasKumar否,如果您在模板中绑定函数,它将在angular的摘要循环中每次都被激发。请尝试。没有。只显示初始值的输出。此外,对于每个可能的值,甚至对于字符串:OOkay,它都显示false。每次我更改该函数时,它都会激发。但在我改变初始值后,即使对于一个数字,它也会返回false?