我正在尝试在Angularjs中testing基于承诺的代码。 我在我的控制器中有以下代码: $scope.markAsDone = function(taskId) { tasksService.removeAndGetNext(taskId).then(function(nextTask) { goTo(nextTask); }) }; function goTo(nextTask) { $location.path(…); } 我想unit testing下列情况: 当markAsDone被调用时,它应该调用tasksService.removeAndGetNext 当tasksService.removeAndGetNext完成时,它应该改变位置(调用goTo ) 在我看来,没有简单的方法来分别testing这两种情况。 我所做的testing第一个是: var noopPromise= {then: function() {}} spyOn(tasksService, 'removeAndGetNext').andReturn(noopPromise); 现在来testing第二种情况,我需要创build另一个假的承诺,将永远resolved 。 这是非常乏味的,这是很多的样板代码。 有没有其他方法来testing这样的事情? 或者我的devise味道?
我对AngularJS很新,但是我很不清楚如何将其绑定到我的服务器的REST Api后端。 例如,假设我有一个通过GET-ing获取的“image”资源:myApi / image / 1 /。 这返回一个json对象与各个领域。 我们来说一下: {url: "some/url", date_created: 1235845} 现在,我想在这个“Image”对象的AngularJS应用程序中进行某种表示。 这种表示不仅仅是字段的映射 – 我想添加“帮助器”函数,例如将date_create字段转换为人类可读的函数。 我知道$资源服务,但我不清楚我需要做什么来创build一个基本的“类”Angular,使用资源获取JSON对象,但通过添加各种帮助器function,然后增强它。 奖励积分: 我也不清楚如何添加模型之间的“关系”。 例如,我可能有一个“用户”资源,它里面embedded了一个“图像”资源,我想要抓住用户资源,但能够调用“图像”帮助function的“图像”部分该模型。
在videoAngularJS MTV Meetup:最佳实践( 2012/12/11 )中 ,Miško解释说:“如果你使用ng-model,那么必须有一个点,如果你没有一个点,错误..” 然而, Angular.JS网站中的第一个例子(基础)似乎与它相矛盾。 是什么赋予了? 自MTV大会以来,Angular.JS已经发生了变化,现在它更加宽容了ng-model?
基本上,我试图填充select框,但连接来自first_name列和last_name列的值。 我想做什么(不起作用): <select ng-model="buyers" ng-options="b.id as (b.first_name + " " + b.last_name) for b in buyers"></select> 什么工作: <select ng-model="buyers" ng-options="b.id as b.first_name for b in buyers"></select>
我使用这种方法: http : //plnkr.co/edit/A6gvyoXbBd2kfToPmiiA?p=preview只validation模糊领域。 这工作正常,但我也想validation他们(并因此显示这些字段的错误,如果有的话),当用户点击“提交”button(不是一个真正的提交,而是一个数据ng单击调用一个函数) 点击该button时,是否有某种方法可以再次触发所有字段的validation?
我已经search了一个类似的问题,但是出现的问题似乎稍有不同。 我试图dynamic改变链接的ui-sref ='(这个链接指向向导表单的下一部分,下一部分取决于下拉列表中的select)。 我只是试图设置ui-sref属性取决于select框中的一些select。 我可以通过绑定到select时设置的范围属性来更改ui-sref。 但链接不起作用,这是可能的吗? 谢谢 <a ui-sref="form.{{url}}" >Next Section</a> 然后在我的控制器中,我这样设置url参数 switch (option) { case 'A': { $scope.url = 'sectionA'; } break; case 'B': { $scope.url = 'sectionB'; } break; } 或者,我使用指令来使其工作,根据在select框中select的选项(下拉)生成具有所需ui-sref属性的超链接。 但是,这意味着每次从select框中select不同的选项时,都必须重新创build链接,这会导致不希望的闪烁效果。 我的问题是,是否有可能改变ui-sref的值,我试着通过简单地改变我的控制器中的url值,或者我必须重新创build整个元素使用指令,每次select是按照我在下面做的? (只是显示完整性) select选项指令(该指令生成链接指令) define(['app/js/modules/app', 'app/js/directives/hyperLink'], function (app) { app.directive('selectUsage', function ($compile) { function createLink(scope,element) { var newElm = angular.element('<hyper-link></hyper-link>'); var el […]
这开始困扰我,我要么喜欢它closures或修复。 所以Webstorm在它的HTMLparsing器中有一个很好的特性,它将试图parsing应该引用项目文件的string中的目录。 例如: Webstorm是正确的。 我的前端代码都在/app但我的服务器提供的文件在应用程序的根,所以在Web上下文/app实际上只是/ 。 作为一方,这种行为也影响我的angular模板: 和我的angular度ui路线(我想它会这样做常规angular度路线以及)。 有没有一种方法,我可以改变webstorm对待/app作为根,所以这是一个有用的function? 如果没有,有没有办法我可以禁用这个? 我试图进入检查员,但无法find一个选项: 不,这不是XML的…我试过。 帮助赞赏。 谢谢…
当请求忙时,我试图在button上显示或隐藏加载指示器。 我通过更改$ scope.loadingvariables在加载请求或加载完成时使用angular来实现。 $scope.login = function(){ $scope.loading = true; apiFactory.getToken() .success(function(data){ }) .error(function(error){ }) .finally(function(){ $timeout(function() { $scope.loading = false; }, 0); }); }; 在前端: <button ng-disabled="loading" class="button button-outline button-positive" type="submit"> Log in <span ng-if="loading" class="ion-refreshing"></span> </button> 这工作正常,但加载图标(离子刷新)显示约2秒,而$ scopevariables立即更新。 我试过$ scope。$ apply,但是这似乎并不是什么问题,范围在请求之后立即更新。 这只是图标没有足够快的响应。 感谢帮助我理解这一点!
我可以在AngularJS范围上设置一个$ watch,当我感兴趣的expression式发生变化时,可以通知它。 但是,一旦我失去兴趣,我该如何停止观看?
Angular应用程序使用ng-click()属性而不是onclick事件。 为什么是这样?