小编sti*_*ife的帖子

用jsdom开玩笑,文档在Promise解析中未定义

场景

尝试使用Jest(和Enzyme)测试一个简单的React组件.这个组件使用react-dropzone,我想测试一些涉及DOM的操作,所以我使用jsdom(已经配置create-react-app)

问题

document在我的测试代码中可用但在组件内部可用的对象undefined位于dropzone onDrop回调内部,这会阻止测试运行.

代码

MyDropzone

import React from 'react'
import Dropzone from 'react-dropzone'

const MyDropzone = () => {
    const onDrop = ( files ) =>{
        fileToBase64({file: files[0]})
            .then(base64Url => {
                return resizeBase64Img({base64Url})
            })
            .then( resizedURL => {
                console.log(resizedURL.substr(0, 50))
            })
    }
    return (
        <div>
            <Dropzone onDrop={onDrop}>
                Some text
            </Dropzone>
        </div>
    );
};

const fileToBase64 = ({file}) => {
    return new Promise((resolve, reject) => {
        const reader = new FileReader() …
Run Code Online (Sandbox Code Playgroud)

javascript jsdom reactjs jestjs enzyme

10
推荐指数
1
解决办法
2210
查看次数

当使用ng-repeat时,Angular $ parent和$ parent.$ parent是相同的控制器

我想了解为什么当ng-repeat在重复的项目上使用带有某个控制器时,该项目的父项和该项目的祖父是同一个控制器.我期待祖父成为父控制器的父母,而不是同一个控制器.

这里的代码澄清了这一点

HTML

<div ng-controller="MainController">
  {{name}}
  <div ng-controller="SecondController">
  {{name}}
    <ul>
      <li ng-repeat="item in list" ng-controller="ItemController">
         {{item.name}} {{$parent.name}} {{myDad}} {{myGrandpa}}
      </li>
    </ul>
    <div ng-controller="ThirdController">
         {{name}} {{$parent.name}} {{myDad}} {{myGrandpa}}
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

JS

angular.module('app', []);


angular.module('app')
  .controller('MainController', function($scope) {
  $scope.name = "MainController";
 })
.controller('SecondController', function($scope) {
  $scope.name = "SecondController";
  $scope.list = [
   {'name': 'aaa'}
  ];
})
.controller('ItemController', function($scope) {
  $scope.name = "ItemController";
  $scope.myDad = $scope.$parent.name;
  $scope.myGrandpa = $scope.$parent.$parent.name;
})
.controller('ThirdController', function($scope) {
  $scope.name = "ThirdController";
  $scope.myDad = $scope.$parent.name;
  $scope.myGrandpa = …
Run Code Online (Sandbox Code Playgroud)

parent angularjs angularjs-scope

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

Webpack加载程序顺序:什么是webpack前后加载程序,以及它们与一系列加载程序的区别

我知道在最新的Webpack中,我们可以指定module.rules选项enforce: 'pre'以使某个加载程序按照docs中的指定以“ pre-loader”的身份运行。

但是我找不到关于预加载器和后加载器含义的适当解释。当然,我们当然可以从逻辑上认为“ pre”先于“ post”运行,但是我不知道确切发生了什么(为什么没有记录?)。

这也是考虑到已经有指定装载机为了看财产的方式Rule.use该文档它说Loaders can be chained by passing multiple loaders, which will be applied from right to left (last to first configured)

所以两个相关的问题:

  • chaining和pre和post之间有什么区别?
  • 有没有办法在此链的顺序上有更详细的webpack日志,以了解首先运行的是什么,其次运行的是什么?

PS 1:我知道在SO上也有类似的问题,但是我发现没有一个问题链接到一份文档,该文档实际上详细解释了加载顺序

PS 2:一个简短的场景说明为什么这对我来说很重要,是我运行打字稿,tslint和babel,我想了解正确的链接过程以及各个步骤中实际发生的情况

webpack webpack-2

5
推荐指数
1
解决办法
270
查看次数

AngularJS angular.equals在ng-show上的工作方式不同

我的控制器中有这些线

$scope.VLANEnabledServers = {};
$scope.myEmpty = {};
console.log(angular.equals($scope.myEmpty, $scope.VLANEnabledServers));
Run Code Online (Sandbox Code Playgroud)

ng-show在模板中

<table ng-show="!angular.equals(myEmpty, VLANEnabledServers)" ng-cloak class="table table-striped table-bordered ng-hide">
Run Code Online (Sandbox Code Playgroud)

angular.equals控制器中的功能打印TRUE正确.但在视图中,在条件ng-show!TRUEtable是反正显示

难道我做错了什么 ?

object-comparison angularjs ng-show

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

Internet Explorer 10不对内联元素应用flexbox

根据flexbox规范,应该将span flex项(flex容器的子项)转换为display:block.Internet Explorer 10不应用此转换,因此flexbox不适用于span(内联)元素.

这里codepen的我是什么意思

我可以使用div但我想知道这是否是一个资源管理器错误,如果有一个更好的解决方案,而不是更改HTML代码.

html css internet-explorer inline flexbox

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