小编Ant*_*una的帖子

对象数组中的indexOf方法?

获取包含对象的数组的索引的最佳方法是什么?

想象一下这种情况:

var hello = {
    hello: 'world',
    foo: 'bar'
};
var qaz = {
    hello: 'stevie',
    foo: 'baz'
}

var myArray = [];
myArray.push(hello,qaz);
Run Code Online (Sandbox Code Playgroud)

现在我想拥有属性indexOf的对象,在这个例子中,它将是.hello'stevie'1

我是JavaScript的新手,我不知道是否有一个简单的方法,或者我是否应该构建自己的函数来做到这一点.

javascript

471
推荐指数
12
解决办法
51万
查看次数

如何捕获Angular应用程序中的内存泄漏?

我有一个用AngularJS编写的webapp,它基本上将API轮询到两个端点.所以,它每分钟都会进行一次调查,看看是否有新的东西.

我发现它有一个小的内存泄漏,我已尽力找到它,但我无法做到.在这个过程中,我设法减少了我的应用程序的内存使用量,这很棒.

在没有做任何其他事情的情况下,每次调查你都可以看到内存使用量的增长(这是正常的)然后它应该下降,但它总是在增加.我从改变阵列的清洗[]array.length = 0,我想我敢肯定,引用不持续存在,因此它不应该被保留的任何现象.

我也试过这个:https://github.com/angular/angular.js/issues/1522

但没有运气......

所以,这是两个堆之间的比较:

内存堆

大多数泄漏似乎来自(数组),如果我打开,它是通过解析API调用返回的数组,但我确定它们没有被存储:

这基本上是结构:

poll: function(service) {
  var self = this;
  log('Polling for %s', service);

  this[service].get().then(function(response) {
    if (!response) {
      return;
    }

    var interval = response.headers ? (parseInt(response.headers('X-Poll-Interval'), 10) || 60) : 60;

    services[service].timeout = setTimeout(function(){
      $rootScope.$apply(function(){
        self.poll(service);
      });
    }, interval * 1000);

    services[service].lastRead = new Date();
    $rootScope.$broadcast('api.'+service, response.data);
  });
}
Run Code Online (Sandbox Code Playgroud)

基本上,假设我有一个sellings服务,那就是service变量的值.

然后,在主视图中:

$scope.$on('api.sellings', function(event, data) {
  $scope.sellings.length = 0;
  $scope.sellings = data; …
Run Code Online (Sandbox Code Playgroud)

memory-leaks angularjs angularjs-ng-repeat

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

如何在AngularJS中停止$ observe

我最近在Angular中的指令中有一些问题没有被正确清理,因此会产生内存泄漏.

所以,今天,当我正在进行测试以确保不会发生时,我意识到没有办法停止观察.

var stopObserving = attrs.$observe('myProperty', function(newValue) {          
  updateElement(newValue);
});
Run Code Online (Sandbox Code Playgroud)

因为我认为它的工作方式与它的工作方式相同,$watch但很明显它没有.根据文档,$observe将返回回调函数,就是它,第二个参数.

我有这个测试:

describe('destroy',function(){
    beforeEach(function(){
      $scope.$destroy();
    });

    it('should have emptied the DOM node', function(){
      expect(element.text()).toBe('');
    });
    it('shouldn\'t have any more watchers', function(){
      dump(element.data().$scope.$$watchers);
      expect(element.data().$scope.$$watchers.length).toBe(0);
    });
}); 
Run Code Online (Sandbox Code Playgroud)

它失败了,因为有一个观察者.我已经检查过并且$destroy正在调用,因此,清洁完成了.但是,我怎么能摆脱那个观察者呢?

代码,如果你好奇的话在这里:

https://github.com/firstandthird/angular-popbox

javascript angularjs angularjs-directive

18
推荐指数
1
解决办法
3518
查看次数

ngSwipe和水平滚动

ng-swipe在移动设备上遇到组合和水平滚动问题.用例是我有一个页面,刷卡应该下一个或上一个加载,内部有模块显示很多信息.其中一些是滚动的.

因此,只要您滚动父母的滑动即可开始导航.所以我ng-swipe在可滚动元素的父级上添加了另一对这种技巧:

self.onInnerSwipe = function($event) {
  $event.originalEvent.preventAction = true;
};
Run Code Online (Sandbox Code Playgroud)

然后在父母身上:

var shouldActionProceed = function($event) {
  return !$event || !$event.originalEvent || !$event.originalEvent.preventAction;
};

self.goToPrev = function($event) {
  if (shouldActionProceed($event)){
    // Do Magic
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我在该元素上滑动但滚动不能正常工作,这就行动不会继续.它有种类,但事实并非如此.它开始一点然后停止.

在Chrome上,有时会记录此警告.

忽略尝试取消具有cancelable = false的touchmove事件,例如因为滚动正在进行且无法中断.

我在这里准备了一个演示:http://jsbin.com/webologavu/2/这个过于简单,但你可以重现这个问题.

任何提示?

javascript javascript-events touch angularjs

16
推荐指数
1
解决办法
585
查看次数

Highcharts上的双y轴匹配

我在图形上表示血压,我想表示收缩压和舒张压以及图形.通常,这些图形按照以下规则一起显示:

90收缩压应与60舒张压相同140收缩压应与舒张压90相同

所以我认为这是因为max和min是设置人员的基础所以我开发了这个来尝试解决这个问题:

function getObjectSystolicDiastolic(){
    var min_systolic = getMinValue(80,person.data,10),
        max_systolic = getMaxValue(150,person.data,10),
        min_diastolic = getMinValue(50,person.data,10),
        max_diastolic = getMaxValue(120,person.data,10),
        min_systolic_eq = min_diastolic*(140-90)/(90-60) + 90 - 60*(140-90)/(90-60),
        max_systolic_eq = max_diastolic*(140-90)/(90-60) + 90 - 60*(140-90)/(90-60);

    // Getting the largest range
    var min_total = min_systolic < min_systolic_eq ?  min_systolic : min_systolic_eq;
    var max_total = max_systolic < max_systolic_eq ? max_systolic : max_systolic_eq;

    return {
        min_systolic : min_total,
        max_systolic : max_total,
        min_diastolic : (min_total - 90 + 60*(140-90)/(90-60))*(90-60)/(140-90),
        max_diastolic : (max_total - 90 + 60*(140-90)/(90-60))*(90-60)/(140-90)
    }; …
Run Code Online (Sandbox Code Playgroud)

javascript highcharts

8
推荐指数
1
解决办法
1786
查看次数

在Ionic Framework上创建离子选项卡外的视图

我是Ionic的新手,但是自从我想尝试它以来已经很久了.我只是在玩,所以也许我没有得到完整的概念.

我正在尝试做一个简单的应用程序,底部有三个选项卡,并且所有三个选项卡都有一个设置图标.当您单击该图标时,应该隐藏选项卡并显示设置屏幕.

由于我不希望用户丢失任何内容,因此所有视图都从全局视图继承:

angular.module('app', ['ionic', 'debug']).config(function($stateProvider, $urlRouterProvider) {

  $stateProvider
      .state('app', {
        url: "/app",
        abstract: true,
        controller: 'AppController',
        templateUrl: "ui/modules/tabs/view.html"
      })
      .state('app.compose-text', {
        url: '/text',
        views: {
          'compose-text': {
            templateUrl: 'ui/modules/text-composer/view.html'
          }
        }
      })
      .state('app.compose-draw', {
        url: '/draw',
        views: {
          'compose-draw': {
            templateUrl: 'ui/modules/draw-composer/view.html'
          }
        }
      })
      .state('app.compose-photo', {
        url: '/photo',
        views: {
          'compose-photo': {
            templateUrl: 'ui/modules/photo-composer/view.html'
          }
        }
      })
      .state('app.settings', {
        url: '/settings',
        views: {
          'settings': {
            controller: 'ui/modules/settings/ctrl.js',
            templateUrl: 'ui/modules/settings/view.html'
          }
        }
      });

  // if none of the above …
Run Code Online (Sandbox Code Playgroud)

angularjs ionic-framework

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

如何删除PowerShell中的重音?

我有一个脚本,可以在Microsoft Exchange Server和Active Directory中创建用户.因此,虽然通常用户的名字在西班牙有重音符号或ñ,但我想避免使用用户名,以免在旧系统中造成任何不兼容性.

那么,我怎么能像这样清理一个字符串呢?

$name = "Ramón"
Run Code Online (Sandbox Code Playgroud)

那样的?:

$name = "Ramon"
Run Code Online (Sandbox Code Playgroud)

powershell exchange-server active-directory

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

LocalStorage,几个Ajax请求还是巨大的Ajax请求?

我面临一个非常大的问题(至少对我而言).我会给你一些背景知识.

我正在开发一个移动网络应用程序,它将显示我所在城市的公交车站和自行车站的信息.它将显示公共汽车和自行车停靠点的GMap标记,如果您点击它,您将获得有关公共汽车的到达时间或可用的自行车数量的信息.我有很好的涵盖.

有问题的部分是装载车站.

我的第一种方法是在页面加载时加载全部站点.它大约是200 Kb的JSON加上迭代数组并将其放入地图的时间.它们被隐藏加载,因此当用户点击行名称时,它们将使用"findMarker"函数显示.如果地图上存在其他工作站,则会隐藏它们以避免地图中有太多标记.

这适用于iPhone 4或全新HTC等新手机,但它在2年前的手机上表现不佳.

我想的第二种方法是按要求加载它们,所以你点击工作站,它们被加载到地图,然后显示但这导致两个问题:

  • 第一个是你可能(或可能不是)执行几个可能结束相同的请求(?)
  • 第二个是为了避免有这么多标记,它们应该被隐藏或删除,这样你可能会删除一段时间内应该再次需要的信息,比如作为一个组而不是一行加载的自行车站.

最后,我想过使用LocalStorage来存储它们,因为它们不会改变那么多,但是会有大量的数据然后,因为它们是关键值而难以检索它们(以及我我不太确定这一点.我发现不支持此功能的设备必须回退到其他选项之一.

所以,那就是说,我认为可能是某人面临一些类似的问题,并以某种方式解决了它或对我有一些提示:).

任何帮助将非常感激.

performance html5 json local-storage jquery-mobile

7
推荐指数
1
解决办法
701
查看次数

Socket.io和现代浏览器无法正常工作

我在socket.io和现代浏览器方面遇到了一些奇怪的问题.令人惊讶的是,IE9的工作正常,因为flashsocket的回退看起来效果更好.

在我的服务器(带快递)

var io = socketio.listen(server.listen(8080));
io.configure('production', function(){
    console.log("Server in production mode");
    io.enable('browser client minification');  // send minified client
    io.enable('browser client etag');          // apply etag caching logic based on version number
    io.enable('browser client gzip');          // gzip the file
    io.set('log level', 1);                    // reduce logging
    io.set('transports', [                     // enable all transports (optional if you want flashsocket)
        'websocket'
        , 'flashsocket'
        , 'htmlfile'
        , 'xhr-polling'
        , 'jsonp-polling'
    ]);
});
Run Code Online (Sandbox Code Playgroud)

在浏览器上,我可以在网络选项卡(在Chrome上)看到websocket已建立并101 Switching Protocols以待处理模式进入.之后,出现xhr-polling和jsonp-polling(flashsocket会发生什么?)

最糟糕的是,信息不会来回传播.我有这个连接:

io.sockets.on('connection', function (socket) {
    // If someone new …
Run Code Online (Sandbox Code Playgroud)

websocket node.js socket.io

6
推荐指数
1
解决办法
6657
查看次数

Angular 1.X,webpack和ngtemplate加载器问题

我最近被介绍给了Webpack,我一直在尝试为Angular 1和Webpack安装ES6初学者包.到目前为止,上帝.我能够创建这样的东西:

import angular from 'angular';
import uiRouter from 'angular-ui-router';
import ngAnimate from 'angular-animate';
import ngAria from 'angular-aria';
import ngMessages from 'angular-messages';
import ngMaterial from 'angular-material';

import UserModule from './modules/user';

const MODULE_NAME = 'nukehome';

const ngModule = angular.module(MODULE_NAME, [
  uiRouter,
  ngAnimate,
  ngAria,
  ngMessages,
  ngMaterial,
  UserModule.name
]);
Run Code Online (Sandbox Code Playgroud)

我个人非常喜欢.

但是,问题来自ngtemplate-loader.我的web pack配置看起来像这样:

webpack: {
  context: '<%= ui %>/js',
      entry: ['babel-polyfill', './index.js'],
      output: {
    path: '<%= build %>/js',
        filename: '<%= package.name %>.js'
  },
  module: {
    loaders: [
      {
        test: /\.html$/,
        loader: 'ngtemplate?relativeTo=' + (path.resolve(__dirname, …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs ecmascript-6 webpack

6
推荐指数
1
解决办法
1863
查看次数