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