草庐IT

angularJS-karma-jasmine

全部标签

javascript - 如何在 {{}} AngularJS 中使用 JavaScript

我知道{{}}可以解释一个表达式,但是当我尝试在其中使用javascript时,它不像{{"a/b/c/d/".split('/').filter(function(n){returnn}).reverse()[0]}}我需要使用它从url中获取slug值。请建议如何使用angularjs实现此目的,url的来源来自外部提要,因此我对此的控制非常有限。 最佳答案 不支持完整的JS,即使支持,也是一种不好的做法。我建议您至少将其放在Controller中的作用域函数中。更好的办法是将它放在服务或过滤器中,因此如果您以后想将它重用于其他

javascript - Jasmine 测试中未调用 AngularJS 指令链接函数

我正在创建一个在其link函数中调用服务的元素指令:app.directive('depositList',['depositService',function(depositService){return{templateUrl:'depositList.html',restrict:'E',scope:{status:'@status',title:'@title'},link:function(scope){scope.depositsInfo=depositService.getDeposits({status:scope.status});}};}]);目前该服务很简单:ap

javascript - 我如何增加和减少angularjs中的值?

我最初有一个值-我们称它为x。选择增量按钮应该将“+1”增加到该值。如果我选择递减,x应该减少-1。但是,实际发生的情况是,当我按下递增按钮时,它会增加+1,但如果我单击递减,它会减少-2。它只能增加/减少1个值。也不需要连续迭代(count++和count--)。如果将“count”作为.js文件中的变量,而不是在html中将其作为ng-init="count=15"提及会更好。JsBinIncrementcount:{{count}}Decrement 最佳答案 这应该行得通,Incrementcount:{{count}}De

javascript - AngularJS:指令 - 无需使用引号即可传递字符串

这是我创建的指令:HTML:JavaScript:.directive('pTest',function(){return{scope:{something:'=?'},templateUrl:'components/testTemplate.html',controller:'testController'};});我希望能够通过以下方式将“bla”作为不带“”的字符串传递:我知道可以通过链接中的attributes参数实现,但在这种情况下它是无关紧要的(如果我错了请纠正我),因为我将这些参数直接传递给范围。 最佳答案 I'dli

javascript - 在 PhantomJS 2 中运行测试时从 Karma 截取屏幕截图?

我需要一种在使用QUnit和Karma在PhantomJS2.0.1中运行的测试期间截屏的方法我找到了这个命令:window.top.callPhantom('render');这不会引发任何错误,但似乎不起作用,或者至少,我不知道在哪里可以找到截取的屏幕截图。有什么线索吗? 最佳答案 找到方法了!解决方案我不得不编辑我的自定义PhantomJS自定义启动器添加一个选项:PhantomJSCustom:{base:'PhantomJS',options:{onCallback:function(data){if(data.type=

javascript - AngularJS:服务器端记录客户端错误

我使用Angular重写了一个Web应用程序。但现在我遇到的问题是,将客户端错误发送到服务器并不像window.onerror=function(...){...}那样容易。但这确实有助于检测错误。我使用以下代码向Angular添加了自定义异常处理程序$provide.decorator("$exceptionHandler",function($delegate){returnfunction(exception,cause){$delegate(exception,cause);log2server(exception+"("+cause+")");};});但这不允许我获取异常的

javascript - Jasmine + AngularJS : How to test $rootScope. $broadcast 被调用参数?

我正在尝试编写一个单元测试来验证是否调用了$rootScope.$broadcast('myApiPlay',{action:'play'});。这是myapi.jsangular.module('myApp').factory('MyApi',function($rootScope){varapi={};api.play=function(){$rootScope.$broadcast('myApiPlay',{action:'play'});}returnapi;});这是我的单元测试:describe('Service:MyApi',function(){//loadtheser

javascript - 多次异步服务调用后的 AngularJS 函数

我有一个RESTAPI,我想像这样从AngularJS服务调用它:angular.module('myModule').service('MyApi',['$http',function($http){return({resources:resources,details:details});functionresources(){return$http.jsonp('/api/resources');}functiondetails(key){return$http.jsonp('/api/details/'+id);}}]);那里删除了其他实现细节,例如不重要的身份验证。API由第

javascript - 带有自定义分隔符的 Angularjs 静态数字过滤器

如何将Angularjs数字过滤器中的分隔符从逗号更改为自定义的分隔符?现在{{价格|number}}返回1,000.00。我需要让它像1000.00一样。我究竟需要如何重写内置Angular过滤器? 最佳答案 您不必弄乱Angular源代码或将语言环境更改为其他语言环境。您甚至不需要为此编写自定义过滤器。只需将$locale服务的NUMBER_FORMATS.GROUP_SEP更改为您需要的任何内容即可:$locale.NUMBER_FORMATS.GROUP_SEP='';$scope.price=100000;但最好在运行bl

javascript - 获取预编译源代码的 Karma 代码覆盖率

我使用Karma运行测试,使用webpack打包文件,使用babel进行es6->es5转换。我已经运行了测试并生成了代码覆盖率,但是代码覆盖率数字是针对转译后的源文件的。无论如何,是否可以获取原始源文件的代码覆盖率?我尝试使用sourcemap预处理器,但它似乎没有做任何事情。我是否需要将其添加到webpack配置中的某处?karma.conf.jsconfig.set({browsers:['Chrome'],//runinChromefiles:['src/**/*-test.js'],frameworks:['mocha'],//usethemochatestframework