如何包含没有类型定义的第 3 方模块(角度拉动刷新)

Posted

技术标签:

【中文标题】如何包含没有类型定义的第 3 方模块(角度拉动刷新)【英文标题】:How to include 3rd party module (angular-pull-to-refresh), which has no type definitions 【发布时间】:2019-06-18 15:23:24 【问题描述】:

我是一个完整的初学者,我不知道如何包含库和注入模块,所以请多多包涵。 这是我想要包含的模块:https://github.com/mgcrea/angular-pull-to-refresh

我用 bower 安装了模块并成功链接了它们。并且应该在 app.component.html 中对吗?或者我应该将它链接到名为列表 (list.component.html) 的组件中,在该组件中显示我想用下拉刷新的数据?

您能否指出我正确的方向,这条线的放置位置以及“myApp”在这里代表什么。 - 将mgcrea.pullToRefresh 模块注入您的应用程序:angular.module('myApp', ['mgcrea.pullToRefresh']);

在示例中,pull-to-refresh 属性在函数 onReload() 中被调用。这个功能应该放在哪里?

感谢大家阅读和帮助我!

【问题讨论】:

你应该帮自己一个忙,参加一些涵盖从头开始构建 Angularjs 应用程序的课程,这样你就掌握了所有基础知识,知道如何在需要时搜索你需要的答案他们,阅读文档以获得有意义的见解,等等。这是一个很好的起点。 toddmotto.com/angularjs *** 是解决非常具体的问题的地方,您可以在其中详细展示您尝试过的内容,以便人们可以帮助解决非常具体的问题。 首先:为什么需要这个模块?我问是因为它似乎是一个旧模块(5 年以来的最后一次提交,它使用 bower。现在不推荐使用 Bower)。你正在开始一个新项目吗?如果是的话,你为什么要使用 angularjs(angularjs 在 4 年前是一个很棒的 js 框架)。我需要这些信息来回答问题 我不需要这个特定的模块,我可以使用任何下拉刷新模块。对于我的项目,我使用的是 Angular 7。 【参考方案1】:

我设法使用此插件进行拉动刷新:https://github.com/BoxFactura/pulltorefresh.js 方法如下: 使用npm install pulltorefreshjs --save npm install @types/pulltorefreshjs --save

为插件安装插件和@types

然后在 app.components.ts 中导入import * as PullToRefresh from 'pulltorefreshjs';

并在 app.components.ts 中对其进行初始化:ptrinit:any = PullToRefresh.init();

【讨论】:

【参考方案2】:

根据网站你可以这样做,在你的js文件中:

'use strict';

angular.module('myApp', ['mgcrea.pullToRefresh']);

   angular.module('myApp')
   .controller('AppCtrl', function($scope, $q) 

   $scope.states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas'];

   $scope.onReload = function() 
      console.warn('reload');
      var deferred = $q.defer();
      setTimeout(function() 
        deferred.resolve(true);
      , 1000);
      return deferred.promise;
   ;

);

在您的 index.html 文件中:

<body ontouchstart="" ng-controller="AppCtrl">

<div class="content">
    <ul class="list-group list-group-table" pull-to-refresh="onReload()">
        <li class="list-group-item" ng-repeat="state in states" ng-bind="state"></li>
    </ul>
</div>

通过在页面的 body 标记 中添加 ng-controller 指令,您可以知道页面的哪个部分将由哪个控制器处理。在这种情况下,AppCtrl 控制器。您可以让多个控制器负责页面的不同部分,例如 div、body 或一个负责整个页面的控制器,例如 html 标签。

希望对您有所帮助!

【讨论】:

以上是关于如何包含没有类型定义的第 3 方模块(角度拉动刷新)的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIScrollView 分页拉动刷新

拉动刷新不适用于少量单元格

UITableView上方的自定义UIView(用户拉动刷新时)

是否可以在没有表格视图的情况下创建拉动刷新?

没有带有拉动刷新的互联网消息 webview 片段

如何使用刷新控件限制拉动距离?