小编Ore*_*Ore的帖子

JavaScript ES6中的静态方法和Angular 2服务

在使用Angular 2和多种计算服务编写应用程序时,我遇到了以下问题:

  1. 我何时在应用程序级别提供的Angular服务中使用static?那是胡说八道吗?
  2. 静态方法如何反映性能?让我们说几个hundret对象同时调用相同的静态方法.这个方法是不止一次实例化的?

这是类的快照,它为我提供了多种计算方法,并在应用程序级别实例化:

@Injectable()
export class FairnessService {
  constructor(){}
  private static calculateProcentValue(value: number, from: number): number {
    return (Math.abs(value) / Math.abs(from)) * 100;
  }
  public static calculateAllocationWorth(allocation: Allocation): number {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

javascript typescript angular2-services angular

21
推荐指数
1
解决办法
3万
查看次数

Gulp uglify因js解析错误而失败

我正在为一个非常恼人的错误而苦苦挣扎.首先:我是新来的.

我尝试用Angular实现单页面应用程序.为了使我的工作流程更好,我尝试实现gulp.

我在安装一些gulp插件时遇到了一些严重的npm错误,但这是另一个故事,我意识到,它有或没有错误.

我真正想到的是useref插件.或者更确切地说,uglify插件.

这是在我的gulpfile.js中:

gulp.task('useref', function() {
  return gulp.src('app/*.html')
    .pipe(useref())
    .pipe(gulpIf('*.js', uglify()))
    .pipe(gulpIf('*.css', cssnano()))
    .pipe(gulp.dest('dist'))
});
Run Code Online (Sandbox Code Playgroud)

这是它在尝试运行时抛出的堆栈跟踪.C:\ Work\evori-portfolio> gulp useref

[16:32:40] Using gulpfile C:\Work\evori-portfolio\gulpfile.js
[16:32:40] Starting 'useref'...

events.js:141
      throw er; // Unhandled 'error' event
      ^
 Error
    at new JS_Parse_Error (eval at <anonymous> (C:\Work\evori-portfolio\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:1526:18)
    at js_error (eval at <anonymous> (C:\Work\evori-portfolio\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:1534:11)
    at croak (eval at <anonymous> (C:\Work\evori-portfolio\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:2025:9)
    at token_error (eval at <anonymous> (C:\Work\evori-portfolio\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:2033:9)
    at expect_token (eval at <anonymous> (C:\Work\evori-portfolio\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:2046:9)
    at expect (eval at <anonymous> (C:\Work\evori-portfolio\node_modules\uglify-js\tools\node.js:22:1), <anonymous>:2049:36) …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs gulp gulp-uglify

5
推荐指数
2
解决办法
5778
查看次数

Angular通过id获取元素的偏移量

当我正在观看相应的部分时,我尝试将导航栏对象设置为活动状态.换句话说:当滚动浏览我的页面(包含多个部分的单页)时,我正在观看的部分应该在导航栏中突出显示.

我已经通过指令得到了滚动位置.我失败的地方是在.nav ul li上触发ng-class.

<li class="" ng-class="{'active': $parent.scrollPos > document.getElementById('something').offset()}">
   <a class="" ng-click="isCollapsed = true" href="#something" du-smooth-scroll>Something</a>
</li>
Run Code Online (Sandbox Code Playgroud)

我使用时没有任何区别

ng-class="{'active': $parent.scrollPos > angular.element('#something').offset()}"
Run Code Online (Sandbox Code Playgroud)

如何从任何元素的文档顶部获取距离?

非常感谢.

PS:我使用jQuery(不是精简版)!

编辑 如何工作(感谢@Sharikov Vladislav):在身体上我使用"PageCtrl":

<body id="page-top" class="index bg-default" ng-app="previewApp" ng-controller="PageCtrl">
Run Code Online (Sandbox Code Playgroud)

看起来像那样:

angular.module('previewApp')
  .controller('PageCtrl', function($scope, $element) {
    $scope.scrollPos = 0;
    $scope.getOffset = function (elementId) {
      var element = $element.find(elementId);      
      return element.offset().top;
    };
  });
Run Code Online (Sandbox Code Playgroud)

在身体后我使用跨度

<span scroll-position="scrollPos"></span>
Run Code Online (Sandbox Code Playgroud)

初始化我的"scrollPosition"-directive,它允许我访问PageCtrl中$ scope.scrollPos上的当前滚动位置.指示:

angular.module('previewApp')
  .directive('scrollPosition', function ($window) {
    return {
      scope: {
        scrollPos: "=scrollPosition"
      },
      link: function (scope, element, attrs) { …
Run Code Online (Sandbox Code Playgroud)

javascript jquery angularjs

3
推荐指数
1
解决办法
1万
查看次数