Javascript Typescript AngularJS访问表单对象
我正在使用AngularJS和Typescript 我在尝试访问表单对象时遇到问题 下面是我的HTMLJavascript Typescript AngularJS访问表单对象,javascript,angularjs,typescript,Javascript,Angularjs,Typescript,我正在使用AngularJS和Typescript 我在尝试访问表单对象时遇到问题 下面是我的HTML <form name="myForm" novalidate> <label>First Name</label> <input type="text" ng-model="frm.FirstName" name="FirstName" /> <button ng-click="logit()"></bu
<form name="myForm" novalidate>
<label>First Name</label>
<input type="text" ng-model="frm.FirstName" name="FirstName" />
<button ng-click="logit()"></button>
</form>
控制台显示frm未定义。有什么想法吗?在AngularJS中,您可以使用
$scope
变量访问控制器内的模型。
在你的情况下是这样的
$scope.frm = {};
console.log($scope.frm.FirstName);
应该是这样的:
module TestCtrl{
interface ITestController{
logit(): void;
frm: any;
}
class TestController implements ITestController{
frm: any;
constructor() {
var vm = this;
vm.frm = {};
}
logit(){
console.log(this.frm.FirstName);
}
}
angular.module('app').controller('TestCtrl', TestController);
}
你要记住的是,var vm=this代码>只是存储当前作用域的一种方式。typescript一开始就做得很好。所以,一般来说,你把vm
放进去不会有什么不同
你也可以考虑把表格打印出来
interface IFormViewModel {
firstName: string;
lastName: string;
}
从而使您的ITestController
interface ITestController{
logit(): void;
frm: IFormViewModel;
}
class TestController implements ITestController{
frm: IFormViewModel;
constructor() {
this.frm = {};
}
logit(){
console.log(this.frm.firstName);
}
}
angular.module('app').controller('TestCtrl', TestController);
使用this.frm.FirstName
。您的typescript编译器应该已经捕捉到了这个错误。感谢您输入表单的想法,实际上非常方便。关于logit函数,它的console.logs未定义,因为它似乎无法找到名字。你知道为什么吗?是的,你需要记住在指定控制器的使用位置时使用ControllerAs
语法,否则这将不起作用。你知道我如何才能console.log myForm.FirstName到目前为止唯一的方法是这个.$scope.myForm.FirstName有什么想法吗?
interface ITestController{
logit(): void;
frm: IFormViewModel;
}
class TestController implements ITestController{
frm: IFormViewModel;
constructor() {
this.frm = {};
}
logit(){
console.log(this.frm.firstName);
}
}
angular.module('app').controller('TestCtrl', TestController);