我开始在jsfiddle中使用AngularJS的forms,我已经遇到了一个问题,一个非常简单的表单不能按预期工作。 我所有的是一个命名的forms,它没有出现在某种原因的范围(我期待一个FormController实例)。 我有一个小提琴设置,下面是基本的代码: HTML <div id="mainContainer" ng-app="angularTest" ng-controller="MainCtrl"> <h1>The Form</h1> <form name="theForm"> <input name="myName" type="text" ng-model="model.name" /> <input name="submit" type="submit" /> </form> </div> JS var app = angular.module('angularTest', []); app.controller('MainCtrl', ['$scope', function($scope) { $scope.model = { name: 'Model Name' }; console.log($scope.theForm); //displays 'undefined' }]); 我无法在jsfiddle上find很多直接的示例,所以我不确定这是否会与像这样的网站发生奇怪的交互(我发现大部分示例都没有使用正式的控制器)。 我已经尝试过Plunker检查,但是我遇到了同样的问题。 我确信我错过了一些非常明显的东西,但我看不到其他很多东西要改变或调整。 任何帮助是极大的赞赏!
我有两条解决路线。 像这样: .when('/foos', { templateUrl: 'views/foos.html', controller: 'FoosCtrl', resolve: { foo_list: ['$q', '$route', '$timeout', '$location', 'Foos', function($q, $route, $timeout, $location, Foos) { // postpone the execution var deferred_foo = $q.defer() Foos.getFoos({token:session_uid}, successCb) function successCb(list) { if(list['status'] === 200) { deferred_foo.resolve(list) } else { alert('Crashcrashcrash') deferred_foo.reject("Something just wasn't right") //$location.path('maintenance') } } return deferred_foo.promise }] } […]
我有以下哪个在绑定到$ scope.id的<input>字段上进行监视。 每次input字段值改变时,watch函数被执行: $scope.$watch("id", function (id) { // code that does something based on $scope.id }); 有没有一种方法,我可以把这个超时或去杠杆_lodash这样的代码不会执行每个按键,而用户正在改变的价值。 我想要的是延迟一秒,以便在用户停止键入一秒钟之后,手表内的代码块就会运行。 请注意,input值是随时可能改变的。 例如,如果值为“1”或“10”或“1000”,则需要调用该函数。 这类似于带有build议的search框在Google中的工作方式。 如果用户input999,那么我需要调用该函数。 如果他删除了9,所以它是99,那么我需要调用该函数。 我有_lodash可用,所以使用这个解决scheme可能是最适合我的需求。
有谁知道,如果你可以删除留在HTML代码中的angular度评论? 例如:如果我使用ngRepeat,并没有重复的项目,AngularJS离开这个: <!– ngRepeat: post in posts –>
我已经在我的angular应用程序中定义了以下服务: services.factory('MyService', ['Restangular', function (Restangular) { return { events : { loading : true }, retrieveQuotes : function() { return Restangular.all('quotes').getList().then(function() { return { hello: 'World' }; }); } }; }]); 我正在写下面的规范来testing它: describe("MyService", function () { beforeEach(module('MyApp')); beforeEach(module("restangular")); var $httpBackend, Restangular, ms; beforeEach(inject(function (_$httpBackend_, _Restangular_, MyService) { ms = MyService; $httpBackend = _$httpBackend_; Restangular = […]
我想在AngularJS中使用socket.io。 我find了下面的工厂: app.factory('socket', function ($rootScope) { var socket = io.connect(); return { on: function (eventName, callback) { socket.on(eventName, function () { var args = arguments; $rootScope.$apply(function () { callback.apply(socket, args); }); }); }, emit: function (eventName, data, callback) { socket.emit(eventName, data, function () { var args = arguments; $rootScope.$apply(function () { if (callback) { callback.apply(socket, […]
如何使用指令方法启用/禁用锚点标记? 例: 同时点击编辑链接,创build和删除需要被禁用或变灰 同时点击创build链接,编辑和删除需要被禁用或变灰 JAVASCRIPT: angular.module('ngApp', []).controller('ngCtrl',['$scope', function($scope){ $scope.create = function(){ console.log("inside create"); }; $scope.edit = function(){ console.log("inside edit"); }; $scope.delete = function(){ console.log("inside delete"); }; }]).directive('a', function() { return { restrict: 'E', link: function(scope, elem, attrs) { if(attrs.ngClick || attrs.href === '' || attrs.href === '#'){ elem.on('click', function(e){ e.preventDefault(); if(attrs.ngClick){ scope.$eval(attrs.ngClick); } }); } […]
目前,我的应用程序有一个控制器,接受一个JSON文件,然后使用“ng-repeat”遍历它们。 这一切都很好,但我也有一个指令,需要迭代通过相同的JSON文件。 这是一个问题,因为我不能在一个页面上请求两次相同的JSON文件(我也不想,因为它效率低下)。 如果我更改其中一个JSON文件的文件名,指令和控制器都会请求并遍历JSON数据。 我想知道的是:什么是最好的方式去传递从我的控制器的JSON请求形成的数组到指令? 如何将数组传递给我的指令,并通过我的控制器访问它时迭代? 调节器 appControllers.controller('dummyCtrl', function ($scope, $http) { $http.get('locations/locations.json').success(function(data) { $scope.locations = data; }); }); HTML <ul class="list"> <li ng-repeat="location in locations"> <a href="#">{{location.id}}. {{location.name}}</a> </li> </ul> <map></map> //executes a js library 指令(当我使用除了locations.json以外的文件名,因为我已经请求过一次 .directive('map', function($http) { return { restrict: 'E', replace: true, template: '<div></div>', link: function(scope, element, attrs) { $http.get('locations/locations.json').success(function(data) { […]
我已经阅读了几篇关于在AngularJs中设置焦点的文章和StackOverflow问题。 不幸的是,我所读到的所有例子都假定我可以添加一些属性来获得焦点,例如focusMe指令 。 但是,如果我不知道哪些input设置重点? 特别是,如何将焦点设置为具有$ invalid set的表单中的第一个input元素 – 即validation失败的元素。 可能有几个input未通过validation,所以我不能使用一个只是试图调用基于此的.focus()的指令。 (我这样做是为了Accessibility / WCAG的原因,它的好做法是通过提交被点击来最小化按键来findvalidation失败的第一个字段)。 $ error对象将给所有失败validation的控件,但是它们按照失败的types进行分组,而不是以任何forms出现在窗体上。 我敢肯定,我可以想出这样做的一些克服的方式。 在表单上有一个指令,在需要设置焦点时接收一些广播 – 然后该指令可以search第一个$ invalid元素。 然而,这似乎是非常复杂的,我想知道这是否是一个更好的“angular”方式做到这一点。
我在Modal控制器中有几个$timeoutexpression式 App.controller('ModalCtrl', function ($scope, $timeout) { for (var i = 0; i < 10; i++) { (function () { var timer = $timeout(function () { console.log('timer') }, 1000); })() } }) 调用模态时,我需要清除所有的定时器: App.controller('MainCtrl', function ($scope, $modal, $timeout) { $scope.showMap = function () { var modal = $modal.open({ templateUrl: 'modalap.html', controller: 'modalCtrl', }) modal.result.then(function () { […]