我想弄清楚为什么我的$watch没有被触发。 这是相关控制器的一个片段: $scope.$watch('tasks', function (newValue, oldValue) { //do some stuff //only enters here once //newValue and oldValue are equal at that point }); $scope.tasks = tasksService.tasks(); $scope.addTask = function (taskCreationString) { tasksService.addTask(taskCreationString);//modifies tasks array }; 在我看来, tasks显然是正确的更新,因为我有这样的长度: <span>There are {{tasks.length}} total tasks</span> 我错过了什么?
抽象 我正在使用angular度作为客户端框架的应用程序,棱angular分明的岩石,我真的很高兴使用它,但现在我发现,我用它来复制和粘贴代码,我想组织成类层次结构。 例如,对话框共享一组共同的function,它们需要被打开,closures,提供typeaheadfunction的代码也是从某些父类BaseTypeaheadClassinheritance的第一个候选者,尽pipe我没有在angular度中find的一件事是一种标准的方法组织这些层次结构。 控制器,服务,提供者都使用普通的javascript函数,下面的函数可以通过prototype来扩展,所以我的问题是: 题 组织我的类函数的angular度是什么?是否有任何标准的机制可以从另一个类派生出一个类 PS 我猜想这个问题: 将基类的实现定义为服务,因此它们将被轻松注入到需要该特定类的任何控制器或其他服务中 定义OOP服务并提供将用于创build基类/派生类的方法,如define , derive等 编辑 从最开始问我的问题的时候已经过去了一段时间。 从那以后,我就开始采用我在几个项目中成功使用的方法,我非常喜欢,想和大家分享。 目前angular并没有提供任何用于组织类层次结构的构造,可惜的是,或多或less的大型应用程序不能满足Model / View / Controller / …结构,它必须将代码组织到OOP对象中。 我已经在web开发领域工作了很长一段时间,甚至没有见过一个企业项目正在大量利用JavaScript的OOP优势。 我看到的是巨大的,很好的组织服务器端/数据库端逻辑+接近无限的JavaScript意大利面与客户端的框架和库动物园。 没有MVVM,MVP框架,如knockout.js,骨干,其他…都能够替代OOP。 如果你不使用类,对象,inheritance,抽象,多态等面向对象编程的核心原则,那么你将面临很大的麻烦,最终你会得到一个超长的javascript意大利面条。 对于Angular而言,我认为它是一个与knockout.js / backbone.js /任何其他MVV-nothing框架非常不同的框架,但根据我的实践,它也不是能够替代OOP的银弹。 当我试图不使用Angular OOP时,我最终得到了大部分位于控制器中的重复逻辑。 不幸的是,没有(我没有find)清楚和angular度的方式来打这个问题。 但我已经成功(我认为)解决了这个问题。 我使用了紧凑的零依赖关系库,它只是实现了John Resig's Simple JavaScript Inheritance ( https://github.com/tracker1/core-js/blob/master/js-extensions/040-Class.js )。 在这个库的帮助下,我能够创build/inheritance/创build抽象方法/覆盖它们,换句话说就是在服务器端完成我所习惯的一切。 以下是一个示例用法: Application.factory('SomeChildObject', ['$http', 'SomeParentClass', function ($http, SomeParentClass) { var SomeChildClass = SomeParentClass.extend({ […]
我正在使用“可拖动”指令来支持图像拖动。 但是,根据用户的angular色,我需要禁用某些用户组的图片拖动function。 我使用了下面的代码。 <!–draggable attribute is used as handle to make it draggable using jquery event–> <li ng-repeat="template in templates" draggable id="{{template._id}}" type="template" class="template-box"> <!– Images and other fields are child of "li" tag which can be dragged.–> </li> dragSupported方法在模板范围内,并返回true或false 。 我不想通过使用ng-if为dragSupported()返回的每个值创build两个大的重复<li>元素。 换句话说,我不是在寻找下面的办法来解决这个问题。 <!–draggable attribute is used as handle to make it draggable using jquery […]
我有一个outerItems的列表。 在每个outerItem中,我有一个innerItems列表。 它们是dynamic分类的。 当鼠标光标指向innerItem的其中一个时,我必须在innerItem元素上方显示popup窗口。 popupdiv是身体的孩子,因为我不想为每个innerItems单独popup。 我看到它的方式 – 在ng-mouseover我调用函数,设置左/顶部属性到我绝对定位的popup。 因此,对于每个innerItems,我想调用jQuery .offset()方法,从页面的左上angular给我左/顶值。 那么如何获得当前作用域元素的jQuery对象呢? 或者,如果我select了错误的方式
我有2个html页面, welcome.html和login.html ,这两个页面都通过ngview属性和路由器提供程序 “插入” index.html依赖的URL,作为我的AngularJS应用程序的一部分。 这个例子可以在Wire up a Backend下的AngularJS主页上find。 我的问题 :是否有一种方法来使welcome.html和login.html之间的过渡动画?
我有表单字段,使用requiredvalidation。 问题是,表单呈现时立即显示错误。 我只想在用户实际input文本字段或提交后显示。 我怎样才能实现呢?
不知何故,通过Angular的魔力,如果你使用ng-model并提供一个布尔值,你的checkbox将被检查,如果布尔值为true,并且如果为false,则不选中。 <input type="checkbox" ng-model="video.hidden"> 虽然这本身是相当莫名其妙的,我实际上是试图扭转检查的状态,因为不像todo.done意味着框被检查的todo示例,我的模型更像todo.incomplete 。 不幸的是我的第一个猜测没有奏效: <input type="checkbox" ng-model="!video.hidden"> 我处于一个模式已被口授给我的位置,所以我不能改变它,不想在客户端上按摩它(因为我发送客户端对象回到服务器,因为它是在可信的环境中运行)。 更新 这工作在1.3,不给你的string(1.2.xxx给你的string,而不是布尔): <input type="checkbox" ng-model="video.hidden" ng-true-value="false" ng-false-value="true">
所以我想通过ng-bind指令中的filter来放置一个variables ng-bind="input | filter" 但我想插入更多的文字 ng-bind="input | filter + 'more' " 但是这不起作用。 有没有一种方法可以在ng-bind中添加更多的文本,就像你使用{{}} : {{input | filter}} more
我正在为一个指令的模板工作。 如果范围中的某个属性设置为true,则应将data-toggle="dropdown"添加到该元素。 如果variables为false,则此数据属性不应该呈现为元素的属性。 例如,如果scopevariables为true,模板应该呈现: <span data-toggle="dropdown"></span> 如果为false,模板应呈现: <span></span> 模板看起来会是什么样子? 例如,我知道我可以使用ng-class来有条件地包含一个类。 如果我想让模板呈现这个: <span class="dropdown"></span> 那么我的模板看起来像这样: "<span ng-class="{ 'dropdown': isDropDown }"></span> 如果范围variablesisDropDown为false ,那么该模板将简单地呈现: <span></span> 所以在模板中有一个方法来有条件地添加class="dropdown" 。 是否有模板的语法,使我有条件地添加data-toggle="dropdown" ? 我为模板尝试过的一件事情是: "<span data-toggle="{ 'dropdown': isDropDown }"></span> 我对上述模板的思考是,如果scopevariablesisDropDown为true,则data-toggle的值将被设置为“dropdown”。 如果isDropDown为false,那么data-toggle的值将只是一个空string"" 。 这似乎并没有工作。
我正在处理angular度js应用程序,我陷入了一种情况,我必须使用angular度js将数据导出到Xls。 我已经在互联网上search了很多出口function或angularjs的任何库,所以我可以做到这一点,或者至less我可以得到如何导出的想法。 我没有任何代码或工作在这里显示。 我需要build议。 请帮助我。 提前致谢。 更新: 我有一个数据是一个对象的数组,我在表中的UI上迭代。 我的后端是node.js和前端是angularjs。 我的问题是,如果我们有从服务器的数据,我正在UI上使用,我怎样才能使用相同的数据导出到XLS使用angularjs。 我不想在后端再次打电话来提取数据并导出。 在现有的表格中,用户可以selectcheckbox(任意数量的行或所有行)来将数据提取到Xls。 在node.js中,我使用了名为:Excel的节点模块,它在nodemodules站点上可用。 我的数据是这样的: "data": [ { "Name": "ANC101", "Date": "10/02/2014", "Terms": ["samsung", "nokia": "apple"] },{ "Name": "ABC102", "Date": "10/02/2014", "Terms": ["motrolla", "nokia": "iPhone"] } ] 我想要使用angularjs或任何angularjs库的解决scheme。