Tag: angularjs

AngularJS:当值大于时,ng-repeatfilter

我有一个简单的ng-repeat,它会抛出数据,它显示的一个字段是NumberOfStamps: <tr ng-repeat-start="list in Data.Items "> <td><a href=" {[{list.Title}]} {[{list.ForeName}]} {[{list.SurName}]}</a></td> <td>(Date of Birth {[{list.Dob}]})</td> <td>{[{list.NumberOfStamps}]} stamps</td> </tr> 示例输出: Mr Adam Happy Date of Birth 01/6/1984 16 stamps Mr Adam Sad Date of Birth 24/11/1975 0 stamps Mr Adam Green Date of Birth 02/1/1963 1 stamps Mr Adam Red Date of Birth 21/1/1951 12 stamps […]

如何设置指令的dynamic控制器?

谈话很便宜,首先显示我的代码: HTML: <div add-icons="IconsCtrl"> </div> 指示: angular.module('attrDirective',[]).directive('addIcons', function($compile){ return { restrict : 'A', controller : "IconsCtrl" }, link : function (scope, elem , attrs, ctrl) { var parentElem = $(elem); var icons = $compile("<i class='icon-plus' ng-click='add()'></i>)(scope); parentElem.find(".accordion-heading").append(icons); }, } }); 控制器: function IconsCtrl($scope){ $scope.add = function(){ console.log("add"); }; } 现在它工作,当我点击加号图标,浏览器控制台输出“添加”。 但我想dynamic地将控制器设置为指令,如下所示: HTML: <div add-icons="IconsOneCtrl"> </div> […]

ng-repeat不更新数组

我正在通过ng-repeat循环呈现数据。 我希望它更新,因为我更新数组。 从我读这应该会自动发生,但这是行不通的。 那么我做错了什么? HTML: <tr ng-repeat="data in dataDifferenceArray"> <td> {{data.name}} </td> <td> {{data.startData}} </td> <td> {{data.endData}} </td> <td> {{data.differenceData}} </td> </tr> 控制器(这个function是通过点击button触发的): $scope.getDifferences = function () { $scope.dataDifferenceArray = []; var i; for (i = 0; i < 20 ;i++) { $scope.dataDifferenceArray.push({ name : 30, startData : 20, endData : 2, differenceData : 30 […]

Angular中方括号用法的用途是什么?

我想了解MyOtherService和MyOtherComplexService的声明之间的MyOtherComplexService 。 尤其是方括号部分的用途是什么? 什么时候使用它们,什么时候使用? var myapp = angular.module('myapp', []); myapp.factory('MyService', function($rootScope, $timeout) { return { foo: function() { return "MyService"; } } }); myapp.factory('MyOtherService', function($rootScope, $timeout, MyService) { return { foo: function() { return "MyOtherService"; } } }); myapp.factory('MyOtherComplexService', ['$rootScope', '$timeout', 'MyService', function($rootScope, $timeout, MyService) { return { foo: function() { return "MyOtherComplexService"; } } […]

如何在angularjs中设置select框的默认值

我有一个窗体用于编辑对象,我不能在select框中select一个值。 我有一个代表要编辑的json数组,如下所示: $scope.item = [{ "objectID": "76", "versionID": "0", "versionName": "CURRENT", "objectName": "xyz", }] 现在我同时从另一个json数组中填充select框,如下所示: $scope.versions = [{ "id": "0", "description": "CURRENT", "name": "CURRENT" }, { "id": "114", "description": "description of Version 2", "name": "version2" }, { "id": "126", "description": "description of Version 3", "name": "version3" }, { "id": "149", "description": "description of Version 4", […]

AngularJS ng-options创build范围

我正在尝试创build一个select元素,其中包含一个数字1的列表,其中页面是一个variables,这是我拥有的页面数。 我不知道该怎么做的是构造ng-optionsexpression式,以便它能给我所需要的数字。 这是我到目前为止 <select ng-model="page" ng-options="???"></select> 我需要在ng-optionsexpression式中放置什么以便创build我的select <select> <option value="1">1</option> … <option value="35">35</option> </select> 我是否需要创build一个函数,返回一个数组数组,并以某种方式使用它,还是有一个更简单的方法来做到这一点? 任何帮助将不胜感激。 谢谢 编辑 发布我的问题后,我想出了一种方法来做到这一点,通过在我的控制器中创build一个名为范围的函数,它采用两个数字,并返回一个数组与该范围内的所有值。 $scope.Range = function(start, end) { var result = []; for (var i = start; i <= end; i++) { result.push(i); } return result; }; 然后在我做的HTML <select ng-name="page" ng-options="page for page in Range(1, pages)"></select> 这是最简单的方法吗?还是有更好的方法?

angular$ location.path不工作

我有一个类似这个问题,但不同。 在这里,我正在尝试为window.postMessage处理程序添加一个事件侦听器。 app.run(function ($location, $window, $rootScope) { $window.addEventListener('message', function(e) { $location.path("/abc"); console.log($location.path()); // this prints "/abc" as expected $rootScope.$apply(); // this has no effect $scope = angular.element(document).scope(); // this is the same as $rootScope $scope.$apply(); // so this also has no effect }); }); $location.path不被Angular识别。 另一个问题说,我应该在范围上调用$apply() ,但唯一可用的范围是$rootScope并且调用$apply()似乎不起作用。 答案的评论表明,范围可以得到 $scope = angular.element(document).scope() 但是这给了我$rootScope ,这是行不通的。 如何得到angular度来注册$location.path()的更改? 有没有更好的方式来注册一个messagecallback的方式,我可以改变path?

自定义表单validation指令来比较两个字段

我是一个angular色的新手,我在angular度的formsvalidation指令如何工作的绊脚石。 我知道我可以很容易地添加指令到单个字段 ,但我试图添加一个validation,它将比较两个表单字段 (这两个都是模型的元素)。 这是一个表单框架: <form name="edit_form" > <input name="min" type="number" ng-model="field.min"/> <input name="max" type="number" ng-model="field.max"/> </form> <div class="error" ng-show="edit_form.min.$dirty || edit_form.max.$dirty"> <small class="error" ng-show="(what goes here?)"> Min cannot exceed max </small> </div> 总之,我想编写一个指令,并使用它来显示/隐藏这个small.error如果min和max都有值,但min > max 。 我怎样才能访问一个指令内的两个领域? 是一个指令是这个工作的正确工具?

使用$ window或$ location在AngularJS中redirect

我正在处理的应用程序包含各种状态(使用ui路由器),其中一些州要求您login,其他人是公开的。 我创build了一个有效地检查用户是否login的方法,当前有什么问题实际上是在必要时redirect到login页面。 应该注意的是,login页面目前不在AngularJS应用程序中。 app.run(function ($rootScope, $location, $window) { $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) { if (toState.data.loginReq && !$rootScope.me.loggedIn) { var landingUrl = $window.location.host + "/login"; console.log(landingUrl); $window.open(landingUrl, "_self"); } }); }); console.log正确显示了预期的URL。 在那之后,我尝试了几乎所有的事情,从$ window.open到window.location.href,不pipe我尝试过什么,都不会发生redirect。 编辑(已解决): 发现问题。 var landingUrl = $window.location.host + "/login"; $window.open(landingUrl, "_self"); variableslandingUrl被设置为'domain.com/login',这不会与$ window.location.href(这是我尝试的事情之一)的工作。 但是在改变代码之后 var landingUrl = "http://" + $window.location.host […]

包含ng-change延迟的angular指令

我有一个searchinput字段与ng-change绑定的查询函数。 <input ng-model="search" ng-change="updateSearch()"> 然而,这对每个angular色都会发生太快。 所以我最终做了这样的事情: $scope.updateSearch = function(){ $timeout.cancel(searchDelay); searchDelay = $timeout(function(){ $scope.requery($scope.search); },300); } 因此,请求仅在用户停止input后300毫秒内完成。 有没有解决scheme将其包装在指令中?