我试图unit testing控制器代码在一个模块,其他模块作为依赖,但一直没能弄清楚如何正确地嘲笑他们。 我正在使用茉莉花框架,并运行与噶(测量)的testing。 模块代码 var app = angular.module('events', ['af.widgets', 'angular-table']); app.controller('eventsCtrl', function([dependencies]){ $scope.events = []; … }); 规范代码 describe('events module', function(){ var $scope, ctrl; beforeEach(function(){ angular.mock.module('af.widgets', []); angular.mock.module('angular-table', []); module('events', ['af.widgets', 'angular-table']); }); beforeEach(inject(function($rootScope, $controller){ $scope = $rootScope.new(); ctrl = $controller('NameCtrl', { $scope: $scope, }); })); it('should have an empty events array', function(){ expect($scope.events).toBe([]); }) […]
我正在用Jasmine编写AngularJS的指令testing,并使用templateUrl: https : //gist.github.com/tanepiper/62bd10125e8408def5cc 但是,当我运行testing时,我得到了错误包括在要点: Error: Unexpected request: GET views/currency-select.html 从我在文档中读到的东西,我认为我正确地做了这件事,但似乎并不是这样 – 我在这里错过了什么? 谢谢
如何强制angularjs重新加载一个ng-src属性的图像,当图像的url没有改变,但其内容有? <div ng-controller='ctrl'> <img ng-src="{{urlprofilephoto}}"> </div> 执行file upload的uploadReplace服务正在replace图像的内容,而不是url。 app.factory('R4aFact', ['$http', '$q', '$route', '$window', '$rootScope', function($http, $q, $route, $window, $rootScope) { return { uploadReplace: function(imgfile, profileid) { var xhr = new XMLHttpRequest(), fd = new FormData(), d = $q.defer(); fd.append('profileid', profileid); fd.append('filedata', imgfile); xhr.onload = function(ev) { var data = JSON.parse(this.responseText); $rootScope.$apply(function(){ if (data.status == 'OK') […]
我正在尝试对文件更改做一些validation。 这是我的代码: 查看/模板 <input type="file" name="file" id="file" onchange="angular.element(this).scope().setFile(this)" required /> <span class="error" ng-show="myForm.file.$error.required">Error</span> <span class="error" ng-show="myForm.file.$error.size">Selected file is too large</span> <span class="error" ng-show="myForm.file.$error.filetype">Unsupported File type</span> 调节器 angular.module("myapp").controller("myctrl", function($scope) { $scope.setFile = function(element) { $scope.$apply(function($scope) { var fileObject = element.files[0]; $scope.file.fileType = fileObject.type.toUpperCase().substring(fileObject.type.indexOf("/") + 1); // Validation if (!$scope.isValidFileType($scope.file.fileType)) { myForm.file.$setValidity("myForm.file.$error.filetype", false); } if (fileObject.size > […]
我试图使用$ log.debug(“Foo”)。 它怎么能被closures。 我无法在任何地方find样品。 我认为它需要在configuration中设置,但我似乎无法得到这个工作。 在哪里设置开关?
我的Angular应用程序允许用户加载一个项目,当发生这种情况时,我想设置一个查询string,其中包含项目的Id,以便如果用户刷新页面(或者想要链接到),URL已经设置(如果Id存在于$ routeParams中,则已经有加载项目的代码)。 我怎样才能设置该查询参数,而不会导致路由? 如果路由发生,页面上还有其他的东西会被重置(包括一个需要重新载入所有数据的插件),所以重要的是查询参数的改变。 总之,当我加载项目123时,我想要发生的是URL从以下变化: www.myurl.com/#/Items 至: www.myurl.com/#/Items?id=123 没有任何路由发生。 什么是最好的方法来做到这一点?
我正在使用html5模式的angularjs。 这似乎控制了页面上的所有href。 但是,如果我想在应用程序的同一个域中有一个链接,但实际上并不在应用程序中。 一个例子就是pdf。 如果我做<a href="/pdfurl">angular将尝试使用html5mode并使用路线提供程序来确定应该加载哪个视图。 但我实际上希望浏览器以正常的方式进入该页面。 要做到这一点的唯一方法是与路线提供商制定一个规则,并redirect到正确的页面与window.location?
我想在filter中使用参数,当我用ng-repeat迭代一些数组 例: HTML的部分: <tr ng-repeat="user in users | filter:isActive"> JavaScript的部分: $scope.isActive = function(user) { return user.active === "1"; }; 但是我想能够使用filter <tr ng-repeat="user in users | filter:isStatus('4')"> 但它不工作。 我怎么能这样做?
当我写手表处理函数时,我检查undefined newVal参数和null 。 为什么AngularJS有这样的行为,但没有特定的效用方法? 所以有angular.isUndefined但不angular.isUndefinedOrNull 。 手工实现并不困难,但是如何在每个控制器中扩展angular度以实现该function呢? TNX。 编辑 : 这个例子: $scope.$watch("model", function(newVal) { if (angular.isUndefined(newVal) || newVal == null) return; // do somethings with newVal } 处理这种方式是否被普遍接受? 编辑2 : JSFiddle示例( http://jsfiddle.net/ubA9r/ ): <div ng-app="App"> <div ng-controller="MainCtrl"> <select ng-model="model" ng-options="m for m in models"> <option value="" class="ng-binding">Choose model</option> </select> {{model}} </div> </div> var app = […]
我正在使用Angular和Twitter Bootstrap导航栏,并试图让崩溃function工作。 部分:program.html <div class="navbar navbar-inverse navbar-static-top" ng-include="'partials/navbar.html'" ng-controller="NavbarCtrl"></div> 部分:navbar.html <div class="navbar-inner"> <div class="container"> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="brand" href="#">Short Course</a> <div class="nav-collapse collapse"> <ul class="nav"> <li><a href="#"><i class="icon-home icon-white"></i> Home</a></li> <li class="dropdown ng-class: settingsActive;"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Intro <b class="caret"></b></a> <ul class="dropdown-menu"> <li><a onclick='$("#myModal").modal("show");'>User Info</a></li> […]