我有一个表单,如果点击提交,需要显示validation错误信息。 这是一个工作的笨蛋 <form name="frmRegister" ng-submit="register();" novalidate> <div> <input placeholder="First Name" name="first_name" type="text" ng-model="user.firstName" required /> <span ng-show="frmRegister.first_name.$dirty && frmRegister.first_name.$error.required">First Name is required</span> </div> <div> <input placeholder="Last Name" name="last_name" type="text" ng-model="user.lastName" required /> <span ng-show="frmRegister.last_name.$dirty && frmRegister.last_name.$error.required">Last Name is required</span> </div> <div> <input placeholder="Email" name="email" type="email" ng-model="user.email" required /> <span ng-show="frmRegister.email.$dirty && frmRegister.email.$error.required">Email is required.</span> <span […]
我想做一个完整的页面重新加载的redirect,以便来自我的Web服务器的cookies在页面加载时被刷新。 window.location = "/#/Next"和window.location.href = "/#/Next"不起作用,他们做了一个Angular路由,它没有命中服务器。 在Angular控制器中完成一个完整的服务器请求的正确方法是什么?
我有我的服务,使用myOtherService,这使远程调用,返回承诺: angular.module('app.myService', ['app.myOtherService']) .factory('myService', [myOtherService, function(myOtherService) { function makeRemoteCall() { return myOtherService.makeRemoteCallReturningPromise(); } return { makeRemoteCall: makeRemoteCall }; } ]) 要为myService进行unit testing,我需要模拟myOtherService ,使其makeRemoteCallReturningPromise()方法返回一个promise。 这是我如何做到的: describe('Testing remote call returning promise', function() { var myService; var myOtherServiceMock = {}; beforeEach(module('app.myService')); // I have to inject mock when calling module(), // and module() should come before any inject() […]
当使用controller as语法时如何订阅属性更改? controller('TestCtrl', function ($scope) { this.name = 'Max'; this.changeName = function () { this.name = new Date(); } // not working $scope.$watch("name",function(value){ console.log(value) }); }); <div ng-controller="TestCtrl as test"> <input type="text" ng-model="test.name" /> <a ng-click="test.changeName()" href="#">Change Name</a> </div>
required和ng-required (表单validation)有什么区别?
我陷入了一些我认为应该是直截了当的事情。 我需要从三个不同的ajax调用数据,结合和处理所有三个,并显示结果数组给用户。 以最简单的forms,我的代码如下所示: function giftControler ($scope, $http) { var names = $http.get("names.json"), naughty = $http.get("naughty.json"), nice = $http.get("nice.json"); 我知道我的variables被分配给承诺,而不是实际的结果,并且http请求已被传递给事件队列。 如果我遵循这些可执行语句,这些variables将是未定义的。 我不明白如何等待这些承诺解决,以继续处理它们。 我想要做的是立即添加代码: for (var i=0; i<names.length; i++){ for (var j=0; j<nice.length; j++){ if (names[i] === nice[j]){ names[i] = names[i] + "–Yay!!"; }; }; }; $scope.kids = names; 问题是,我不能像承诺解决数组一样工作。 Javascript会在http调用之后立即看到这些语句,并立即尝试执行它们,即使这些promise还没有解决。 我陷入困境的是$ http api给了我一个三个函数的承诺对象: error , success […]
从Angular docs指令看,编译函数有3个参数,其中之一是transclude 。 文档提供的唯一解释是: transclude – 一个transclude连接函数:function(scope,cloneLinkingFn)。 我想知道你在克隆链接函数中究竟做什么。 我什至不知道传入的参数。 我发现一个例子有一个名为clone参数,它看起来像一个HTML元素。 还有其他参数吗? 哪个HTML元素正是这个? 我也在看我的指令中可能使用transclude: 'element' 。 当使用'element'而不是true时候,这些问题的答案是否会改变? 我用简单的例子来理解跨越,但是我不能find更复杂的例子,特别是transclude: 'element' 。 我希望有人能提供一个更全面的解释。 谢谢。
我正在使用AngularJS框架开展一个项目。 我很新的使用这个框架; 在过去,我只使用纯JavaScript和jQuery。 该项目是一个小众市场的网页devise应用程序。 当用户在devise时在页面之间移动时,我想维护他们正在进行的所有更改的会话。 现在,如果用户login,我们使用数据库中的数据加载会话。 当用户点击保存button时,我们用会话数据更新数据库。 有人告诉我,我可以保持与Angular相似的会话。 这可能吗? 如果是的话,你可以请教我一个不关注指令或UI的教程吗? 如果这是不可能的,还有其他可行的select吗?
我有一些麻烦的unit testing我的应用程序,这是build立在Angular UI路由器的路由器。 我想testing的是状态转换是否适当地改变URL(稍后会有更复杂的testing,但这是我开始的地方)。 以下是我的应用程序代码的相关部分: angular.module('scrapbooks') .config( function($stateProvider){ $stateProvider.state('splash', { url: "/splash/", templateUrl: "/app/splash/splash.tpl.html", controller: "SplashCtrl" }) }) 和testing代码: it("should change to the splash state", function(){ inject(function($state, $rootScope){ $rootScope.$apply(function(){ $state.go("splash"); }); expect($state.current.name).to.equal("splash"); }) }) 在Stackoverflow(和官方的UI路由器testing代码)类似的问题build议包装在$应用$ state.go调用应该是足够的。 但是我做到了,国家还没有更新。 $ state.current.name保持为空。
请解释AngularJs中$routeProvider和$stateProvider的区别。 最好的做法是