我正在使用这种方法:http://plnkr.co/edit/A6gvyoXbBd2kfToPmiiA?p=preview仅验证模糊字段.这工作正常,但我还想验证它们(并因此显示那些字段的错误,如果有的话)当用户点击"提交"按钮(不是真正的提交但是对数据的数据点击调用)
有没有办法在单击该按钮时再次触发所有字段的验证?
我有一个指令,在几个函数中多次初始化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,例如?
我已经在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是未定义的,所以我的猜测是我的传递方法(注入)它是错误的,但我无法找到如何正确地做到这一点
如何在指令中使用属性的值?我的元素看起来像这样:
<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等)的内容放入该模板中.
我有以下指令来自动对焦字段:
.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) 我正试图窥探指令的$ 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相关而不是向下播放,如果是这样,我该如何捕获它,如果不是,我该如何处理这种情况呢?
我在指令中使用以下代码来放置工具提示
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以便我可以测试我的所有功能?
我有一个最大长度为 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 中测试它?
我想检查一个文件是否被添加为二进制文件,但我不知道在cvs status或cvs log中要查找什么..任何提示?
我正在寻找一种方法来告诉Apache如果有来自某个目录的文件请求,它应该首先运行一个php脚本来验证用户是否已登录.我知道我可以把目录放在docroot之外让一个PHP脚本处理身份验证和文件下载,但因为这些是试图打开其他Flash文件的Flash文件,它必须是docroot中的目录,并且文件不应该由php脚本发送.在旧的设置中我们使用的是mod_auth_script(http://sourceforge.net/projects/mod-auth-script/),但由于这是一个相当模糊的apache模块,如果可能的话我宁愿有一个更常见的解决方案.
我正在比较远程分支,以便查看分支是否可以安全地合并到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)
我的问题是:
我需要使用PHP或Javascript(最好是PHP)计算字符串中的单词.问题是计数需要与Microsoft Word中的计数相同,因为这是人们组装原始文本的地方,因此这是他们的参考框架.PHP有一个单词计数功能(http://php.net/manual/en/function.str-word-count.php),但据我所知,这并不是100%相同.
有什么指针吗?
题:
在聚合物 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) angularjs ×8
unit-testing ×4
javascript ×2
php ×2
apache ×1
cvs ×1
date ×1
directive ×1
forms ×1
git ×1
jasmine ×1
karma-runner ×1
polymer ×1
polymer-1.0 ×1