如何使用TypeScript Controller和Angular Js绑定数据
我正在使用Type Script。我已经将我的angular js控制器转换为Type Script,但是我面临ng-repeater中的问题。(我在下面附加了我的控制器代码:
class CustomCtrl{ public customer;
public ticket;
public services;
public cust_File;
public ticket_file;
public service_file;
static $inject = ['$scope', '$http', '$templateCache'];
constructor (
private $http,
private $templateCache
){}
回答:
我决定添加另一个答案,以描述更多详细信息,如何在其中创建和使用控制器 以及如何将其注入 。
这是这个答案的扩展
如何使用TypeScript定义控制器?我们也有一个工作的朋克
所以有这个指令:
export class CustomerSearchDirective implements ng.IDirective{
public restrict: string = "E";
public replace: boolean = true;
public template: string = "<div>" +
"<input ng-model=\"SearchedValue\" />" +
"<button ng-click=\"Ctrl.Search()\" >Search</button>" +
"<p> for searched value <b>{{SearchedValue}}</b> " +
" we found: <i>{{FoundResult}}</i></p>" +
"</div>";
public controller: string = 'CustomerSearchCtrl';
public controllerAs: string = 'Ctrl';
public scope = {};
}
我们可以看到,我们宣布这个指令可作为 字元素。我们还内联了一个 。此模板已准备好绑定
并在我们的控制器上调用Action 。我们说的是控制器的名称:“CustomerSearchCtrl”,并要求运行时使其以“ Ctrl”形式提供 (conrollerAs :)
最后,我们将该对象注入角度模块:
app.directive("customerSearch", [() => new CustomerSearch.CustomerSearchDirective()]);
我们可以使用$scope
as ng.IScope
,但是要对其进行更多类型的访问,我们可以创建自己的 接口 :
export interface ICustomerSearchScope extends ng.IScope{
SearchedValue: string;
FoundResult: string;
Ctrl: CustomerSearchCtrl;
}
这样,我们知道,我们有了string SearchedValue
以及另一个string
FoundResult
。我们还通知应用程序Ctrl将被注入该范围,并且类型为CustomerSearchCtrl
。控制器来了:
export class CustomerSearchCtrl{
static $inject = ["$scope", "$http"];
constructor(protected $scope: CustomerSearch.ICustomerSearchScope,
protected $http: ng.IHttpService)
{
// todo
}
public Search(): void
{
this.$http
.get("data.json")
.then((response: ng.IHttpPromiseCallbackArg<any>) =>
{
var data = response.data;
this.$scope.FoundResult = data[this.$scope.SearchedValue]
|| data["Default"];
});
}
}
加上其注册到模块
app.controller('CustomerSearchCtrl', CustomerSearch.CustomerSearchCtrl);
这个控制器有什么有趣的地方?它有一个公共actonSearch,可以通过this.
例如访问其所有膜this.$http
。因为我们在VS中指示了智能感知,即angular.d.ts类型/接口
protected $http: ng.IHttpService
将被使用,我们以后可以轻松地访问其方法。类似的是返回值的类型.then()
.then((response: ng.IHttpPromiseCallbackArg<any>) => {...
其中确实包含数据:任何类型的{} …
希望对您有所帮助,请注意此处所有操作
以上是 如何使用TypeScript Controller和Angular Js绑定数据 的全部内容, 来源链接: utcz.com/qa/405194.html