小编Jul*_*ian的帖子

角度指令是否需要自己的控制器?

这是一个简单的问题,但我似乎无法找到任何相关文件......

我试图找出是否角度指令既可以继承父控制器以及其自身.请考虑以下示例:

对自我的简单继承

app.directive('screen', function() {
  return {
    scope: true,
    controller: function() {
        this.doSomething = function() {

        };
    },
    link: function($scope, el, attrs, ctrl) {
        // ctrl now contains `doSomething`
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

从父级继承

app.directive('screen', function() {
  return {
    scope: true,
    controller: function() {
        this.doSomething = function() {

        };
    }
  }
});
app.directive('widget', function() {
  return {
    scope: true,
    require: '^screen',
    link: function($scope, el, attrs, ctrl) {
        // ctrl now contains `doSomething` -- inherited from the `screen` directive …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

24
推荐指数
1
解决办法
4283
查看次数

jQuery AJAX'multipart/form-data'不发送数据?

我不知道为什么我不能让jQuery传递上传数据,因为AJAX对象似乎配置正确,并且正在发送正确的Content-Type/MIME-Type标头.

我尝试了两种不同形式的请求 - 一种是在文字中包含FormData对象,另一种是直接传递FormData对象.

不幸的是,无论哪种方式我都无法通过,$ _FILES和$ _POST都是空数组.

我想要使​​用的理想要求如下:

在此输入图像描述

以下代码:

var files = new FormData();

$.each(context.prototype.fileData, function(i, obj) { files.append(i, obj.value.files[0]); });

var request = { action: 'upload', id: response.obj.id, data: files };

$.ajax({

    type        : 'POST',
    url         : context.controller,
    data        : request,
    processData : false,
    contentType : 'multipart/form-data',
    mimeType    : 'multipart/form-data',

    success     : function(r) {
        console.log(r);
        //if (errors != null) { } else context.close();

    },

    error       : function(r) { alert('jQuery Error'); }

});
Run Code Online (Sandbox Code Playgroud)

当我尝试导出$ _FILES和$ _POST时,唯一的响应(查看网络选项卡和控制台)只是两个空数组......

ajax jquery file-upload multipartform-data

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

AngularJS:观看尺寸的最佳方式?

所以,我已经提出了一些解决方案,我仍然不太确定什么是最好的.首先参考我可以找到一个类似的问题,虽然它有点旧.在这里,对于任何阅读此内容的人来说:在Angular中观察尺寸变化

目标

我的应用程序的一部分需要响应高度元素.我想要在UI /指令层执行此操作的最快,最具视觉吸引力的方式,而无需显式广播更改事件.

方案一:指令

一个简单的指令可以记录每个摘要循环的维度(并调整大小事件)

return {
  scope: {
    size: '=ngSize'
  },
  link: function($scope, element, attrs) {

    var windowEl = angular.element($window),
        handler  = function() {
          if ($scope.size &&
              element.outerWidth() === $scope.size.width &&
              element.outerHeight() === $scope.size.height) return false;
          $scope.size = {
            width: element.outerWidth(),
            height: element.outerHeight()
          };
        };

    windowEl.on('resize', function() {
      $scope.$apply(handler);
    });

    $root.$watch(function() { return [element.outerWidth(), element.outerHeight()] }, handler, true);

  }
};
Run Code Online (Sandbox Code Playgroud)

问题:变化传播不够快,视觉滞后很明显.

解决方案:使用间隔调用


方案二:$ interval

我尝试使用$ interval调用同样的东西并且它工作正常,但CPU使用率却出乎意料地高,即使在我反转控制并跟踪由值监视的简单根集合中的元素之后(避免由指令的多个实例生成的并发计时器) ).

除了我环境中与GC相关的一些问题(我目前没有看到任何暗示这一点),是否有更好的方法来创建这种流畅的布局?

提出的解决方案/问题

我的第一个想法是创建一个并发的$ digest循环的方法,以有效地监视DOM作为一个整体的任何视觉变化.是否有可能有效地迭代所有计算的样式,例如,生成可以按值观察的廉价哈希?每次添加和/或更改相关的计算样式时,可以相对便宜地触发的东西?

在我构建和分析它之前,有人可以评论它是否真实,或者是否首先抽象/重构调整大小触发器更有意义?

关于在1.2.9中完成此任务的首选方法的任何其他想法? …

javascript css dom angularjs angularjs-directive

22
推荐指数
1
解决办法
7829
查看次数

在Redis中交叉巨大HyperLogLog的最佳方法

问题很简单:我需要根据Redis的表示找到最佳策略来实现准确的HyperLogLog联合 - 这包括在导出数据结构以供其他地方使用时处理它们的稀疏/密集表示.

两个策略

有两种策略,其中一种似乎要简单得多.我已经看过实际的Redis源代码了,我遇到了一些麻烦(在我自己的C中并不大),从精确和高效的角度来看,使用内置的结构/例程或开发自己的内容是否更好.对于它的价值,我愿意牺牲空间和某种程度上的错误(stdev + -2%)以追求效率与极大的集合.

1.包容性原则

到目前为止,两者中最简单的 - 基本上我只是将无损联合(PFMERGE)与此原理结合使用来计算重叠的估计.在许多情况下,测试似乎表明这种运行是可靠的,尽管我无法准确处理非常高的效率和准确性(某些情况下会产生20-40%的错误,这在这个用例中是不可接受的).

基本上:

aCardinality + bCardinality - intersectionCardinality
Run Code Online (Sandbox Code Playgroud)

或者,在多组情况下......

aCardinality + (bCardinality x cCardinality) - intersectionCardinality
Run Code Online (Sandbox Code Playgroud)

似乎在许多情况下都能很好地准确地工作,但我不知道我是否相信它.虽然Redis有许多内置的低基数修饰符,旨在规避已知的HLL问题,但我不知道野生不准确(使用包含/排除)的问题是否仍然存在大量差异很大的问题......

2. Jaccard Index Intersection/MinHash

这种方式似乎更有趣,但我的一部分感觉它可能与Redis的一些现有优化计算重叠(即,我没有从头开始实现我自己的HLL算法).

通过这种方法,我将使用MinHash算法的随机抽样箱(我不认为LSH实现值得麻烦).这将是一个单独的结构,但通过使用minhash获取集合的Jaccard索引,您可以有效地将union基数乘以该索引以获得更准确的计数.


问题是,我不太熟悉HLL,虽然我很想深入研究Google论文,但我需要在短期内实现可行的实施.有可能我忽略了Redis现有优化的一些基本考虑因素,或者在算法本身中,它允许计算上便宜的交叉点估计具有相当宽松的置信区间.

因此,我的问题:

如果我愿意牺牲空间(并且在很小程度上,精确度),如何使用redis最有效地获得N个巨大(数十亿)集的计算上便宜的交叉估计?

hash hashtable redis minhash hyperloglog

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