我想在Angular.js的单页Web应用程序上实现身份验证.在官方文档角建议使用拦截器:
$provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
return {
// ...
'responseError': function(rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection);
}
};
});
Run Code Online (Sandbox Code Playgroud)
问题是当服务器发送401错误时,浏览器立即停止"未授权"消息,或者使用登录弹出窗口(当服务器发送认证HTTP标头时),但Angular无法使用它的拦截器捕获HTTP按照建议处理错误.我误会了什么吗?我试图在网络上找到更多的例子(这个,这个和这个为例),但他们没有工作.
我正在尝试了解Flux示例聊天应用.作者提到了这种单向数据流:
但是,在示例应用程序中,Action Creators(ChatMesssageActionCreator)和Stores(MessageStore)之间以及Stores(MessageStore,ThreadStore)和Web API Utils(ChatMessageUtils)之间存在依赖关系,这似乎违反了单向数据流规则:
是建议遵循给定的例子,还是应该设计一个更好的模式?
我发现ChatMessageUtils不属于Web API Utils,因此商店中的两个箭头不应指向那里,因此可能它们没问题.然而,ActionCreator和Store之间的联系似乎仍然很奇怪.
为什么在将一些文本输入输入后第一次没有调用"click"回调?
var app = {};
app.controller = function(){
this.data = m.prop("");
this.click = function(){
alert("button clicked");
};
};
app.view = function(ctrl){
return m("html", [
m("body", [
m("div", [
m("p", ctrl.data()),
m("input[type=text]", { onchange: m.withAttr("value", ctrl.data) }),
m("button", { onclick: ctrl.click }, "Click")
])
])
]);
};
m.module(document, app);
Run Code Online (Sandbox Code Playgroud) 我使用带有require()的CommonJS模块,除了React,它是全局的:
// I don't want require React in every module:
// var React = require("react");
var MyComponent = React.createClass({ // React is global here
});
Run Code Online (Sandbox Code Playgroud)
在MyComponent上运行单元测试时,Jest无法找到React.有没有办法告诉Jest插入一个全局的React对象?(我使用npm和gulp-browserify.)
javascript ×3
angularjs ×1
facebook ×1
jestjs ×1
mithril.js ×1
reactjs ×1
reactjs-flux ×1
unit-testing ×1