小编Maa*_*ten的帖子

Angular Form提交中所有字段的触发验证

我正在使用这种方法:http://plnkr.co/edit/A6gvyoXbBd2kfToPmiiA?p=preview仅验证模糊字段.这工作正常,但我还想验证它们(并因此显示那些字段的错误,如果有的话)当用户点击"提交"按钮(不是真正的提交但是对数据的数据点击调用)

有没有办法在单击该按钮时再次触发所有字段的验证?

forms angularjs

79
推荐指数
6
解决办法
15万
查看次数

模拟AngularJS/Jasmine测试中的日期

我有一个指令,在几个函数中多次初始化Date对象.当单元测试各个函数时,我可以像这样处理日期:

(function (global) {
  var NativeDate = global.Date;

  global.stubDateConstructor = function (fakeDate) {
      global.Date = function () {
          global.Date = NativeDate;
          return fakeDate;
      }
  }
}(this));

// ageInYears()
it("should return the age in years of the person given his/her birthdate", function() {
    stubDateConstructor(new Date('2010/01/01'));
    expect(ageInYears('01-01-1990')).toBe(20);
    stubDateConstructor(new Date('2010/01/01'));
    expect(ageInYears('01-01-1900')).toBe(110);
});
Run Code Online (Sandbox Code Playgroud)

为了测试指令本身,它调用ageInYears和其他几个类似的函数,这不会起作用,因为我在调用Date()之后,stubDateConstructor会将Date()重置为真正的Date对象.

在AngularJS/Jasmine中是否存在处理这些情况的本地方式,或者我应该查看Sinon,例如?

unit-testing date angularjs

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

使用AngularJS将控制注入控制器

我已经在AngularJS中编写了一个服务,但是我无法使用角度种子的方式来处理它.

控制器代码如下:

/*function PhotoCtrl($scope, Photo) {
    $scope.photos = Photo.query();
}*/

angular.module('myApp.controllers', []).
    controller('PhotoCtrl', [function($scope,Photo) {
    $scope.photos = Photo.query();
}])
.controller('MyCtrl2', [function() {

}]);
Run Code Online (Sandbox Code Playgroud)

请注意,注释掉的部分工作正常,但我想处理它有点像(推荐)第二种方式.

我得到的错误是Photo是未定义的,所以我的猜测是我的传递方法(注入)它是错误的,但我无法找到如何正确地做到这一点

angularjs

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

在其模板中使用Angular Directive属性

如何在指令中使用属性的值?我的元素看起来像这样:

<div class="tooltip-icon" 
  data-my-tooltip="click" 
  data-tooltip-title="foo" 
  data-tooltip-content="test content"></div>
Run Code Online (Sandbox Code Playgroud)

我想在我的指令模板中使用它,如下所示:

mainApp.directive('myTooltip',
    function() {

        // allowed event listeners
        var allowedListeners = ["click"];

        return {
            restrict: 'A',
            template:   '<div class="tooltip-title">...</div>' +
                        '<div class="tooltip-content">' +
                        '...</div>',
            link: function(scope, elm, attrs) {
                if(allowedListeners.indexOf(attrs.myTooltip) != -1){
                    elm.bind(attrs.myTooltip, function(){
                        ...
                    });
                }

            }
        };
    }
);
Run Code Online (Sandbox Code Playgroud)

三点的位置应该是代码,但我无法弄清楚如何将attrs对象(attrs.tooltipTitle等)的内容放入该模板中.

javascript angularjs angularjs-directive

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

如何检查我的元素是否已集中在单元测试中

我有以下指令来自动对焦字段:

.directive('ngAutofocus', function ($timeout) {
    return {
        restrict: 'A',
        link: function (scope, elm) {
                $timeout(function () {
                elm[0].focus();
            });
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

我该如何对此进行单元测试?我尝试了几个像下面的选择器,但它们都返回错误或错误:

console.log($(elm[0]).is(':focus'));
Run Code Online (Sandbox Code Playgroud)

我的单元测试设置如下:

elm = angular.element('<input type="text"  name="textfield1" ng-autofocus>');
$scope.$digest();
$compile(elm)($scope);
Run Code Online (Sandbox Code Playgroud)

unit-testing jasmine angularjs

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

单元测试间谍$ emit

我正试图窥探指令的$ emit,但不知怎的,我不能让间谍'听'$ emit.

这是我的指令控制器中的代码:

$scope.$on('send', function () {
    console.log('called');
    $scope.$emit('resultSend', {'ok': true, 'data': ''});
});
Run Code Online (Sandbox Code Playgroud)

这是我的单元测试:

var $rootScope, $compile, elm, element;

beforeEach(inject(function ($injector) {
    $rootScope = $injector.get('$rootScope');
    $compile = $injector.get('$compile');
    elm = angular.element('<test></test>');
    element = $compile(elm)($rootScope);
}));


it('should listen for the send broadcast and emit the resultSend', function () {
    spyOn($rootScope, '$emit');
    $rootScope.$broadcast('send');
    expect($rootScope.$emit).toHaveBeenCalledWith('resultSend');
});
Run Code Online (Sandbox Code Playgroud)

console.log输出('called')由Karma打印出来,所以我猜单元测试广播事件确实有效.

这是否与$ emit相关而不是向下播放,如果是这样,我该如何捕获它,如果不是,我该如何处理这种情况呢?

unit-testing angularjs angularjs-directive

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

如何在AngularJS单元测试中为DOM添加div?

我在指令中使用以下代码来放置工具提示

var bodyoffset = document.querySelector(".smallcontainer-content").getBoundingClientRect();
var width = elm.width();
if(bodyoffset != undefined){
    var tooltipDiv = document.querySelector(".tooltip");
    angular.element(tooltipDiv).css("top", offset.top-bodyoffset.top+"px");
    angular.element(tooltipDiv).css("left", offset.left-bodyoffset.left+width+5+"px");
}
Run Code Online (Sandbox Code Playgroud)

这在单元测试中不起作用,因为类'smallcontainer'所在的div不存在.如何确保在单元测试中创建div以便我可以测试我的所有功能?

unit-testing directive angularjs

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

场上的 maxlength 不适用于 Karma

我有一个最大长度为 6 的字段,但不知何故,以下输入数据的方式会导致 7 个字符被允许:

<input type="text" name="myName" maxlength="6" ng-model="myModel">
Run Code Online (Sandbox Code Playgroud)

这是测试位:

input('myModel').enter('1111117');
expect(input('myModel').val()).toBe(111111);
Run Code Online (Sandbox Code Playgroud)

这就是结果

expected 111111 but was "1111117"
Run Code Online (Sandbox Code Playgroud)

我想这与正在使用的模型而不是真实领域有关,但是我将如何在 Karma 中测试它?

angularjs karma-runner angularjs-e2e

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

如何查看文件是否是cvs中的二进制文件

我想检查一个文件是否被添加为二进制文件,但我不知道在cvs status或cvs log中要查找什么..任何提示?

cvs

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

使用php/apache中的身份验证脚本保护目录中的文件

我正在寻找一种方法来告诉Apache如果有来自某个目录的文件请求,它应该首先运行一个php脚本来验证用户是否已登录.我知道我可以把目录放在docroot之外让一个PHP脚本处理身份验证和文件下载,但因为这些是试图打开其他Flash文件的Flash文件,它必须是docroot中的目录,并且文件不应该由php脚本发送.在旧的设置中我们使用的是mod_auth_script(http://sourceforge.net/projects/mod-auth-script/),但由于这是一个相当模糊的apache模块,如果可能的话我宁愿有一个更常见的解决方案.

php apache authentication

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

比较远程Git分支

我正在比较远程分支,以便查看分支是否可以安全地合并到Master中,以便释放Master.

我正在做以下事情:

git diff --name-status origin/develbranch ... origin/master
Run Code Online (Sandbox Code Playgroud)

我似乎得到了一个正确的文件列表,如下所示:

AAAA    www/images/widget/topdown/right_dis.png
DDDD    www/includes/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator.php
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 我这样做了吗?
  2. 如果我合并这些分支,DDDD文件将不会在Master中删除吗?

git

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

计算像Microsoft Word这样的单词

我需要使用PHP或Javascript(最好是PHP)计算字符串中的单词.问题是计数需要与Microsoft Word中的计数相同,因为这是人们组装原始文本的地方,因此这是他们的参考框架.PHP有一个单词计数功能(http://php.net/manual/en/function.str-word-count.php),但据我所知,这并不是100%相同.

有什么指针吗?

javascript php

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

如何让 Google 字体(Varela Round)在 Polymer 1.1 Web 组件中工作?

题:

在聚合物 1.1 上下文中,我如何包含用于我的 dom 模块的外部字体(如 google 字体或 font-awesome)?

我知道现在聚合物倾向于使用样式模块。我也知道将字体预加载到 html 并将其导入我的 dom 模块的技术。但我仍然无法让它工作。

我的<circle-x></circle-x>组件的目标:

我的 dom 模块基本上为这些图像提供了圆圈,其<h1>下方已经设置了样式。然后在 flexbox 结构下根据有多少圆圈来响应式地布局它们。

在此处输入图片说明

我尝试过的(TLDR 版本) 我使用rel="import"font.html样式模块,然后使用了我的<circle-x>组件,但不能使用样式字体(当我使用 sans-serif 时它有效),这意味着我选择了它。我还对它进行了谷歌检查,并在<circle-x>组件页面中加载了 google-font 样式表。

我试过的(细节):

<!-- File structure -->
+ circle-x.html
+ typography-x.html
+ varela-round.html
+ bower-components
+ - polymer
    - polymer.html
+ - webcomponentsjs   
    - webcomponents.js
Run Code Online (Sandbox Code Playgroud)

在 Polymer 文件中,我注意到有一个名为 robots.html 的文件,因此我创建了一个类似的文件。

<!-- varela-round.html -->
<link rel="import" ref="https://fonts.googleapis.com/css?family=Varela+Round>
Run Code Online (Sandbox Code Playgroud)

然后是 Typography.html 来引用 roberto.html

<!-- …
Run Code Online (Sandbox Code Playgroud)

web-component google-webfonts polymer polymer-1.0

0
推荐指数
1
解决办法
2029
查看次数