在我的一些指令中,我将函数添加到作用域以处理指令的特定逻辑。 例如: link: function(scope, element, attrs) { scope.doStuff = function() { //do a bunch of stuff I want to test } } 我如何去testing这个function? 我search了一下如何testing一个指令,但是我发现的东西更多的是testing元素的变化。 我可以在每次testing之前编译我的指令,但每次都会消除我的范围。 我想testing作为我的范围更改中的属性函数。 有什么办法来获得从指令定义中返回的对象吗? 然后,我可以直接调用链接函数,并testing范围中定义的每个函数的行为。 有没有更好的方法来做到这一点? 我正在使用Jasmine来运行我的testing,我想在我的范围设置在describefunction,所以我可以有多个function相同的范围数据。
这个问题涉及到NodeJS的Mochatesting框架。 默认行为似乎是开始所有的testing,然后处理asynchronouscallback,因为他们进来。 在运行asynchronoustesting时,我希望在调用之前的asynchronous部分之后运行每个testing。 我怎样才能做到这一点?
我想在内容发生变化时创build一个包含自定义行为的列表。 我尝试为此创build一个指令,但是如何将ng-transclude和ng-repeat指令结合起来,我有些遗憾。 有人可以让我走上正轨吗? HTML: <div ng-app="myApp"> <div ng-controller="ctrl"> <mylist items="myItem in items"> <span class="etc">{{myItem}}</span> </mylist> </div> </div> 使用Javascript: angular.module('myApp', []) .controller('ctrl', function ($scope) { $scope.items = ['one', 'two', 'three']; }) .directive('mylist', function () { return { restrict:'E', transclude: 'element', replace: true, scope: true, template: [ '<ul>', '<li ng-repeat="WhatGoesHere in items" ng-transclude></li>', '</ul>' ].join(''), link: function […]
在使用单个脚本标记和embedded代码之间还是使用具有相同代码的多个脚本标记遍布整个HTML之间有什么区别(性能,最佳实践等)? 例如: <script> foo(); </script> … <script> bar(); </script> 与: <script> foo(); bar(); </script> 谢谢
任何想法,如果有的话,window.scroll(x,y)和window.scrollTo(x,y)之间有什么区别[不是在谈论jQuery]? 还有哪些浏览器支持哪些想法? 谢谢
在阅读Peter关于JavaScript的文章后,我注意到了 Brendan Eich指出,Harmony的目标之一是成为JavaScript编译器的更好的目标。 目前有两个stream行的编译器有一些模糊的ES:和谐合规: Traceur CoffeeScript的 虽然CoffeeScript有一些合规性,但它并不是ES:Harmony编译器,所以它没有用处。 Tracuer似乎更严格地坚持ES:Harmony规范,但我不知道它是否打算成为一个完整的ES:Harmony编译器。 由于目标是将ES6编译为ES3,因此还需要支持ES5function(可能是将ES5编译为ES3还是将ES6编译为ES3的开关)。 目前是否有其他项目旨在创build一个完整的ES:与ES3编译器和谐? 知道标准是年轻/不稳定/不断变化,开始编写这样一个编译器是明智的。 目前是否有任何ES5 – > ES3编译器? 我在Traceur邮件列表上留下了一个问题。 这样的编译器的目的是向后兼容ES3。 ES3中没有完全模拟ES5和ES6。
最近,我开始修补React.js,我喜欢它。 我开始在常规的ES5中,以便弄清事情,这些文档都是用ES5编写的。 但是现在我想尝试ES6,因为它有光泽,新颖,而且似乎简化了一些东西。 我感到困扰的是,对于我添加到组件类中的每种方法,我现在都必须绑定“this”,否则它不起作用。 所以我的构造函数最终看起来像这样: constructor(props) { super(props); this.state = { …some initial state… } this.someHandler = this.someHandler.bind(this); this.someHandler = this.someHandler.bind(this); this.someHandler = this.someHandler.bind(this); this.someHandler = this.someHandler.bind(this); this.someHandler = this.someHandler.bind(this); this.someHandler = this.someHandler.bind(this); this.someHandler = this.someHandler.bind(this); } 如果我要给class上添加更多的方法,这将会变得更大,更丑陋。 我的问题是,有没有办法解决这个问题,或者至less让它更容易,更短,更难看? 我想尝试使用ES6的一个主要原因是为了使我的代码更加简洁,但是正好相反。 任何build议或意见,将不胜感激。
什么是没有jQuery的jQuery的trigger方法? 例如,我该如何做$('.blah').trigger('click'); 没有jQuery ?
所有关于Backbone的例子我已经看到整个应用程序使用一个路由器,但是对于应用程序的每个单独部分(页眉,页脚,舞台,侧边栏)有一个路由器没有意义吗? 有没有人用多个路由器构build应用程序?您有什么经验? 让我们来考虑一个嵌套视图的复杂应用:当一个视图有自己的路由器来处理子视图的显示的时候,有没有比一个大的路由器通知主视图改变子视图更好的方法呢? 这个问题的背景:我已经看到很多骨干路由器和GWT中的ActivityMapper的相似之处。 ActivityMapper只负责为DOM中给定的路线和给定的容器获取正确的演示者。
首先,我知道有一些库为location.pushState / popState ( History.js , Hash.js , jQuery hashchange )提供了polyfills ,所以请不要链接到这些库。 我需要一个更强大的库来实现RIA中的以下function: 用户点击一个链接 库被通知并通过Ajax加载上下文(没有完全重载!) 所有的<a>元素都与一个点击处理程序杠杆 防止页面重新加载2.( preventDefault )和 调用location.pushState代替/为早期浏览器设置location.hash 加载的内容被插入页面并replace当前的内容 继续1。 而且,之前加载的内容应当在用户导航回来时被恢复。 例如,在Internet Explorer <10和任何其他浏览器中通过Google+轻敲。 有什么更接近的? 我需要支持IE8,FF10,Safari 5和Chrome 18.而且,它应该有像MIT或Apache这样的许可许可证。