小编Nil*_*ste的帖子

在哪里放置模型数据和行为?[TL; 博士; 使用服务]

我正在与AngularJS合作完成我的最新项目.在文档和教程中,所有模型数据都放入控制器范围.我知道必须存在控制器,因此在相应的视图中.

但是,我不认为该模型应该在那里实施.它可能很复杂并且具有私有属性.此外,人们可能希望在另一个上下文/应用程序中重用它.将所有内容放入控制器完全打破了MVC模式.

对于任何模型的行为都是如此.如果我使用DCI架构并从数据模型中分离行为,我将不得不引入其他对象来保存行为.这可以通过引入角色和上下文来完成.

当然,模型数据和行为可以使用普通的javascript对象或任何"类"模式来实现.但AngularJS的做法是什么呢?使用服务?

所以它归结为这个问题:

在AngularJS最佳实践之后,您如何实现与控制器分离的模型?

javascript model-view-controller dci angularjs

340
推荐指数
7
解决办法
7万
查看次数

AngularJS:如何使用$ resource请求发送身份验证令牌?

我想在从API请求资源时发送身份验证令牌.

我确实使用$ resource实现了一项服务:

factory('Todo', ['$resource', function($resource) {
 return $resource('http://localhost:port/todos.json', {port:":3001"} , {
   query: {method: 'GET', isArray: true}
 });
}])
Run Code Online (Sandbox Code Playgroud)

我有一个存储身份验证令牌的服务:

factory('TokenHandler', function() {
  var tokenHandler = {};
  var token = "none";

  tokenHandler.set = function( newToken ) {
    token = newToken;
  };
  tokenHandler.get = function() {
    return token;
  };

  return tokenHandler;
});
Run Code Online (Sandbox Code Playgroud)

我想tokenHandler.get通过Todo服务发送的每个请求发送令牌.我能够通过将其置于特定动作的调用中来发送它.例如,这有效:

Todo.query( {access_token : tokenHandler.get()} );
Run Code Online (Sandbox Code Playgroud)

但我更愿意将access_token定义为Todo服务中的参数,因为它必须随每次调用一起发送.并改善干旱.但是工厂中的所有东西只执行一次,因此在定义工厂之前必须提供access_token,之后它不能更改.

有没有办法在服务中放置动态更新的请求参数?

javascript authentication angularjs

62
推荐指数
5
解决办法
5万
查看次数

如果用户未经授权,如何使用Devise发送CORS头(401响应)

我正在开发一个应用程序,其中服务器和api消费客户端位于不同的域下,所以我想使用CORS.为此,我必须在服务器响应中设置相应的http标头:

def cors_set_access_control_headers
  headers['Access-Control-Allow-Origin'] = 'http://localhost'
  headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
  headers['Access-Control-Allow-Headers'] = '*, X-Requested-With, X-Prototype-Version, X-CSRF-Token, Content-Type'
  headers['Access-Control-Max-Age'] = "1728000"
end
Run Code Online (Sandbox Code Playgroud)

此方法用作before_filterin ApplicationController.

对于某些资源,用户必须经过身份验证和授权.请求通过XHR/Ajax完成.因此,如果用户未经过身份验证,Devise将向客户端发送401响应,而不是重定向到登录页面.但是用于设置CORS头的过滤器不用于该响应.因此401响应不会发送给客户端.我想在客户端捕获并使用401响应.

目前我使用的解决方法是不使用Devise身份验证方法,而是使用自定义身份验证代码段:

def authenticate_cors_user
  if request.xhr? && !user_signed_in?
    error = { :error => "You must be logged in." }
    render params[:format].to_sym => error, :status => 401
  end
end
Run Code Online (Sandbox Code Playgroud)

这也被设置为before_filterin ApplicationController.这样,设置CORS标头的过滤器就会被触发,一切正常.

我更喜欢使用Devise的默认行为,但必须在401响应中设置CORS头.这该怎么做?我必须为此配置监护人吗?

如何为Devise生成的401响应设置CORS头,而不是创建自己的响应?

rest ruby-on-rails cross-domain devise cors

18
推荐指数
1
解决办法
6951
查看次数

SimpleDateFormat:不可解析的日期异常

在查看了几个现有帖子之后,我仍然无法使我的SimpleDateFormat解析器工作.这是代码:

SimpleDateFormat df = new SimpleDateFormat(
    "EEE, dd MMM yyyy HH:mm:ss Z", Locale.US);
try {
    volcanoListDate = df.parse(currentValue);
} catch (ParseException e) {
    Log.d("DEBUG", e.toString());
    Log.d("DEBUG", currentValue);
}
Run Code Online (Sandbox Code Playgroud)

我总是以ParseException结束.以下是调试消息的输出:

06-09 23:52:17.478:DEBUG/DEBUG(2436):java.text.ParseException:Unparseable date:06-09
23:52:17.478:DEBUG/DEBUG(2436):Wed,08 Jun 2011 03:23: 55 -0500

区域设置已设置,模式看起来没问题.我哪里错了?

java android date-format simpledateformat parseexception

7
推荐指数
1
解决办法
9290
查看次数

从大型Clojure树结构中的延迟序列中删除元素,避免头部保留

问题描述

为了在Clojure中处理大型数据结构,惰性序列提供了一种很好的惯用方法.但是,需要谨慎以避免头部滞留.

我很难处理像这样的大型树结构:

                 R                                         Root
       __________|____________________
       A                   B         C, D, E, ...          1st Level Children
_______|_______     _______|_______
X Y Y ... Y X Y     X Y Y ... Y X Y                        2nd Level Children
Run Code Online (Sandbox Code Playgroud)
  • 所有节点都是带密钥的地图:content.any的值:content是该节点的所有子节点的延迟seq.
  • 整棵树不适合记忆.Y第二级有太多物品.
  • Y项目之外的整个树都适合记忆.

在处理完树之后,我想得到一个新树,其中Y删除了所有节点:

           R
     ______|__________________
     A             B         C, D, E, ...
_____|___     _____|___
X X ... X     X X ... X
Run Code Online (Sandbox Code Playgroud)

示例代码和进一步说明

;; Generating example data
;;;;;;;;;;;;;;;;;;;;;;;;;;

(defn root [content]
  {:tag :root :content content})

(defn …
Run Code Online (Sandbox Code Playgroud)

xml tree clojure lazy-evaluation

5
推荐指数
1
解决办法
313
查看次数