如何使用 TypeScript 访问 angular 的 $scope.{{formName}}.$dirty 布尔值?
How do I access angular's $scope.{{formName}}.$dirty boolean with TypeScript?
我有一个带有名称属性的表单,我正在尝试使用 angular 的 $scope
变量来访问该表单及其 $dirty
布尔值。
问题是我正在使用 TypeScript,如果我将 $scope
变量的类型设置为来自 DefinitelyTyped 类型文件的接口 ng.IScope
或 ng.IFormController
之一,我无法输入类似
的内容
$scope.myFormINeedToAccess.$dirty
因为一切都是强类型的,如果我这样做,我会得到错误,
Property 'myFormINeedToAccess' does not exist on type 'IScope'.
或
Property 'myFormINeedToAccess' does not exist on type 'IFormController'.
因为我同时接触了AngularJS和TS,所以我没有在javascript中写任何angular,但据我所知我理解$scope
变量(如果变量是正确的词)是全局可访问的。所以任何你想要的任何级别的封装你都可以删除
$scope.(tons of options/stuff in the current view).(a bunch of additional options)
但我只能说
,感觉很受限制
$scope.(15ish options defined by ng.IScope or ng.IFormController)
如何使用 $scope: ng.IScope
或 $scope: ng.IFormController
才能通过语句
成功访问 $dirty
布尔值
$scope.myFormINeedToAccess.$dirty
1) 不要在 Typescript 中使用 $scope
- 使用 controller as
语法。
2) 在你的控制器中创建一个 public 类型 ng.IFormController
的变量。
3) 将表单的 name
设置为 #2 中创建的变量。
HTML:
<div ng-controller="MyController as vm">
<form name="vm.myForm">
// form elements here
</form>
</div>
控制器:
export class MyController() {
public myForm: ng.IFormController;
public someFunction(): void {
if(this.myForm.$dirty) {
// do something
}
}
}
我显然遗漏了相当多的管道代码,但这应该为您提供了一般要点。
我有一个带有名称属性的表单,我正在尝试使用 angular 的 $scope
变量来访问该表单及其 $dirty
布尔值。
问题是我正在使用 TypeScript,如果我将 $scope
变量的类型设置为来自 DefinitelyTyped 类型文件的接口 ng.IScope
或 ng.IFormController
之一,我无法输入类似
$scope.myFormINeedToAccess.$dirty
因为一切都是强类型的,如果我这样做,我会得到错误,
Property 'myFormINeedToAccess' does not exist on type 'IScope'.
或
Property 'myFormINeedToAccess' does not exist on type 'IFormController'.
因为我同时接触了AngularJS和TS,所以我没有在javascript中写任何angular,但据我所知我理解$scope
变量(如果变量是正确的词)是全局可访问的。所以任何你想要的任何级别的封装你都可以删除
$scope.(tons of options/stuff in the current view).(a bunch of additional options)
但我只能说
,感觉很受限制$scope.(15ish options defined by ng.IScope or ng.IFormController)
如何使用 $scope: ng.IScope
或 $scope: ng.IFormController
才能通过语句
$dirty
布尔值
$scope.myFormINeedToAccess.$dirty
1) 不要在 Typescript 中使用 $scope
- 使用 controller as
语法。
2) 在你的控制器中创建一个 public 类型 ng.IFormController
的变量。
3) 将表单的 name
设置为 #2 中创建的变量。
HTML:
<div ng-controller="MyController as vm">
<form name="vm.myForm">
// form elements here
</form>
</div>
控制器:
export class MyController() {
public myForm: ng.IFormController;
public someFunction(): void {
if(this.myForm.$dirty) {
// do something
}
}
}
我显然遗漏了相当多的管道代码,但这应该为您提供了一般要点。