我一直在使用AngularJS一段时间,并且发现需要每隔一段时间使用$ timeout(似乎通常是初始化一个jQuery插件).
最近,我一直在努力更好,更深入地了解摘要周期,我遇到了$ evalAsync函数.
似乎该函数产生类似的结果$timeout
,只有你没有给它延迟.每次我使用$timeout
它都会延迟0,所以现在我想知道我是否应该使用它$evalAsync
.
这两者之间是否存在根本差异?你会用哪种情况比另一种情况多?我想更好地了解何时使用哪一个.
我的应用程序中有一个特殊请求需要基本身份验证,因此我需要为该请求设置Authorization标头.我读到了有关设置HTTP请求标头的内容,但据我所知,它将为该方法的所有请求设置该标头.我的代码中有类似的东西:
$http.defaults.headers.post.Authorization = "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==";
Run Code Online (Sandbox Code Playgroud)
但我不希望我的每个帖子请求发送此标头.有没有办法只为我想要的一个请求发送标题?或者我是否必须在我的要求后将其删除?
我有一些旧的代码通过jQuery的post方法发出一个AJAX POST请求,看起来像这样:
$.post("/foo/bar", requestData,
function(responseData)
{
//do stuff with response
}
Run Code Online (Sandbox Code Playgroud)
requestData
只是一个具有一些基本字符串属性的javascript对象.
我正在将我们的东西移动到使用Angular,我想用$ http.post替换这个调用.我想出了以下内容:
$http.post("/foo/bar", requestData).success(
function(responseData) {
//do stuff with response
}
});
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我收到了来自服务器的500错误响应.使用Firebug,我发现这样就发送了请求体:
{"param1":"value1","param2":"value2","param3":"value3"}
Run Code Online (Sandbox Code Playgroud)
成功的jQuery $.post
发送身体像这样:
param1=value1¶m2=value2¶m3=value3
Run Code Online (Sandbox Code Playgroud)
我遇到的端点是期望请求参数而不是JSON.所以,我的问题是,无论如何要告诉$http.post
发送javascript对象作为请求参数而不是JSON?是的,我知道我可以自己从对象构造字符串,但我想知道Angular是否提供了开箱即用的东西.
我正在使用一些注释来动态设置类中的字段值.因为无论是public,protected还是private,我想这样做,setAccessible(true)
每次调用set()
方法之前,我都调用Field对象.我的问题是这个setAccessible()
电话会对电影本身产生什么样的影响?
更具体地说,它是一个私有字段和这组代码调用setAccessible(true)
.如果代码中的其他位置然后通过反射检索相同的字段,那么该字段是否已经可访问?或者getDeclaredFields()
,getDeclaredField()
方法每次都返回Field对象的新实例吗?
我想另一种陈述问题的方法是,如果我打电话setAccessible(true)
,在我完成之后将它设置回原始值有多重要?
我们的应用程序有2级导航.我们想使用AngularJS $routeProvider
动态地为模板提供模板<ng-view />
.我正在考虑按照以下方式做一些事情:
angular.module('myApp', []).
config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/:primaryNav/:secondaryNav', {
templateUrl: 'resources/angular/templates/nav/'+<<primaryNavHere>>+'/'+<<secondaryNavHere>>+'.html'
});
}]);
Run Code Online (Sandbox Code Playgroud)
我只是不知道如何填充内部的部分<<>>
.我知道primaryNav和secondaryNav绑定到$ routeParams,但是如何在这里访问$ routeParams以动态提供模板?
在抛出javascript异常的任何时候我们都想做一些额外的事情.
来自以下文档$exceptionHandler
:
角度表达式中的任何未捕获的异常都委托给此服务.默认实现只是委托给$ log.error,它将其记录到浏览器控制台中.
它说"默认实现"的事实使我认为有一种方法可以为服务提供我们自己的实现,并在抛出异常时执行我们想要的操作.我的问题是,你是怎么做到的?我们如何将所有异常保留在此服务中,然后提供我们希望发生的功能?
从指令Angular docs,我看到compile函数有3个参数,其中一个是transclude
.文档提供的唯一解释是:
transclude - 一个transclude链接函数:function(scope,cloneLinkingFn).
我试图了解你在克隆链接功能中会做些什么.我甚至不知道哪些参数传递给它.我找到了一个示例,其中有一个参数被称为clone
HTML元素.还有其他参数吗?这究竟是哪个HTML元素?我也在考虑使用transclude: 'element'
我的指令.执行这些问题的答案时,用改变'element'
来代替true
?
我用简单的例子来理解翻译,但我似乎无法找到更复杂的例子,尤其是transclude: 'element'
.我希望有人能对这一切提供更全面的解释.谢谢.
我的Mac目前正在运行Snow Leopard(10.6.8),我想用Java 7开发.我从Oracle的网站上下载了Java 7 OS X安装程序,开始运行它.不幸的是,我立即收到一条消息,称只有OS X Lion(10.7.3)才支持安装程序.有什么方法可以在我的机器上使用Snow Leopard获得Java 7吗?我不是为了升级我的Java而购买新的操作系统.我搜索了一些,但我找不到多少.我希望我能在这里找到一些帮助.谢谢.
我有一组选择,都有相同的选项.然后我通过过滤器运行这些选项,以便在选择中不显示在不同选择中选择的任何选项.看到这个jsFiddle(在非IE浏览器中)看看我的意思.基本上我阻止在选择中多次选择相同的选项
现在,我所做的事情在IE中存在问题.在IE中打开那个小提琴(我只在IE9中试过它,但我猜测以前的版本有同样的问题).将最后一个选择更改为AAA.注意3个其他选择如何改变他们显示的内容.他们的模型并没有改变,但是当选项改变时,IE会以某种方式窒息.
我的问题是第一,我是否在使用此功能时出错?这个代码完全符合我想要的Chrome和FF,但我做的是我不应该做的事情吗?其次,我怎样才能在IE中解决这个问题?我尝试了一些可以清除和重新设置模型的超时,但事情明显地跳了起来.我想知道是否有一个良好,干净,低影响的解决方法.
任何帮助将非常感激.谢谢.
--UPDATE--
这已经在Angular本身使用版本1.3.3 修复,使用下面的AS Ranjan解决方案.看看1.3.3的新小提琴:http://jsfiddle.net/m2ytyapv/
//dummy code so I can post the edit
Run Code Online (Sandbox Code Playgroud) 在我们的应用程序中,我们有几层嵌套指令.我正在尝试为顶级指令编写一些单元测试.我已经嘲笑了指令本身需要的东西,但现在我遇到了来自低级指令的错误.在我对顶级指令的单元测试中,我不想担心低级指令中发生了什么.我只想模拟低级指令,基本上它没有做任何事情,所以我可以单独测试顶级指令.
我尝试通过这样的方式覆盖指令定义:
angular.module("myModule").directive("myLowerLevelDirective", function() {
return {
link: function(scope, element, attrs) {
//do nothing
}
}
});
Run Code Online (Sandbox Code Playgroud)
但是,这不会覆盖它,它只是在真正的指令之外运行它.如何阻止这些低级指令在顶级指令的单元测试中做任何事情?
angularjs ×8
javascript ×4
java ×2
html-select ×1
http-headers ×1
java-7 ×1
jquery ×1
post ×1
reflection ×1
unit-testing ×1