当前位置: 首页 > 面试题库 >

如何使用TypeScript定义控制器?

萧宏峻
2023-03-14
问题内容

如何使用TypeScript定义我的控制器。到目前为止,它在angular js中,但是我想更改为type script。以便可以快速检索数据。

function CustomerCtrl($scope, $http, $templateCache){

    $scope.search = function(search)
    {
        debugger;
        var Search = {
            AccountId: search.AccountId,
            checkActiveOnly: search.checkActiveOnly,
            checkParentsOnly: search.checkParentsOnly,
            listCustomerType: search.listCustomerType
        };
        $scope.customer = [];
        $scope.ticket = [];
        $scope.services = [];
        $http.put('<%=ResolveUrl("API/Search/PutDoSearch")%>', Search).
            success(function(data, status, headers, config) {
                debugger;
                $scope.cust_File = data[0].customers;
                $scope.ticket_file = data[0].tickets;
                $scope.service_file = data[0].services;
            }).
            error(function(data, status)
            {
                console.log("Request Failed");
            });
    }
}

问题答案:

我决定通过工作示例添加另一个答案。这是非常简单的版本,但应该显示所有的基本如何向我们 TypeScriptangularJS

有一个工作的家伙

这将是我们data.json扮演服务器的角色。

{
  "a": "Customer AAA",
  "b": "Customer BBB",
  "c": "Customer DDD",
  "d": "Customer DDD",
  "Default": "Not found"
}

这将是我们的启动模块MainApp.js

var app = angular.module('MainApp', [
  'CustomerSearch'
  ]);

angular.module('CustomerSearch',[])

所以以后我们可以使用module CustomerSearch。这就是我们的index.html

<!DOCTYPE html>
<html ng-app="MainApp" ng-strict-di>

  <head>
    <title>my app</title>
    <script data-require="angular.js@*"
            src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.0-rc.1/angular.js"
            ></script>

    <script src="MainApp.js"></script>
    <script src="CustomerSearch.dirc.js"></script>
  </head>

  <body>    
    <customer-search></customer-search> // our directive
  </body>

</html>

现在,我们将看到1)指令,2)范围,3)控制器的声明。所有这些都可以放在一个文件中(在此处检查)。让我们观察到文件的所有三个部分CustomerSearch.dirc.js
(这是CustomerSearch.dirc。 TS ..但对于plunker我遵守那个)

1)获取对上面声明的模块’CustomerSearch’的引用并声明 directive

/// <reference path="../scripts/angularjs/angular.d.ts" />
module CustomerSearch
{
    var app = angular.module('CustomerSearch');

    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 = {};
    }

    app.directive("customerSearch", [() => new CustomerSearch.CustomerSearchDirective()]);

该指令在TypeScript中声明,并立即注入到我们的模块中

现在,我们声明一个作用域,以在Controller中用作强类型对象:

    export interface ICustomerSearchScope  extends ng.IScope
    {
        SearchedValue: string;
        FoundResult: string;
        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);
}

在这里观察所有动作



 类似资料:
  • 控制器定义 ThinkCMF5的控制器完全按 TP5的控制器用法来,但 CMF 封装了几个重要控制器基类,为了更方便开发者,我们建议如果没有特殊需求,自己创建的控制器请最好继承一个基类控制器; 用于 WEB 项目的基类控制器有四个,分别是:BaseController,HomeBaseController,UserBaseController,AdminBaseController 继承关系 th

  • 控制器定义 ThinkCMF6.0的控制器完全按 TP6.0的控制器用法来,但 CMF 封装了几个重要控制器基类,为了更方便开发者,我们建议如果没有特殊需求,自己创建的控制器请最好继承一个基类控制器; 用于 WEB 项目的基类控制器有四个,分别是:BaseController,HomeBaseController,UserBaseController,AdminBaseController, Re

  • 控制器定义 控制器文件通常放在application/module/controller下面,类名和文件名保持大小写一致,并采用驼峰命名(首字母大写)。 一个典型的控制器类定义如下: <?php namespace app\index\controller; use think\Controller; class Index extends Controller { public fu

  • 控制器是放在Controller下的,如果有分组的情况,控制器是放在分组下的,默认分组可以通过Config.php指定。 那么Home分组下的控制器的文件位置就应该是App1/Controller/Home/****Controller.php ,比如:IndexController.php。 那么控制器类要如何定义呢? 首先所有的控制器是继承自GF_Controller类的,如果有分组的情况下,

  • [Original] The @Controller annotation indicates that a particular class serves the role of a controller. Spring does not require you to extend any controller base class or reference the Servlet API. H

  • 我明白,对于处理器,我只需在文件夹下的中编写代码,然后从中创建一个nar文件。但是在控制器服务的情况下,我有4个文件夹生成。我可以看到两个java文件。 > 显示在文件夹下 显示在文件夹下 现在,为什么在自定义控制器服务的情况下生成两个java文件,而在自定义处理器的情况下只生成一个java文件。另外,由于我试图模仿服务,其中的java文件中有两个我应该复制服务的原始源代码。 请从头开始指导我创建