我正在阅读这篇文章:http :
//eviltrout.com/2013/06/15/ember-vs-
angular.html
它说,
由于缺乏约定,我想知道有多少Angular项目依赖于不良行为,例如直接在控制器内进行AJAX调用?由于依赖注入,开发人员是否将路由器参数注入指令中?AngularJS新手开发人员是否会以经验丰富的AngularJS开发人员认为惯用的方式来构造代码?
我实际上是$http
从Angular.js控制器进行调用。为什么这是一个不好的做法?那么$http
拨打电话的最佳做法是什么?为什么呢?
编辑:这个答案主要集中在版本1.0.X。 为避免混淆,已对其进行了更改,以反映截至2013年12月5日的所有当前Angular版本的最佳答案。
这个想法是创建一个服务,该服务向返回的数据返回一个承诺,然后在您的控制器中调用它并在其中处理该承诺以填充$ scope属性。
module.factory('myService', function($http) {
return {
getFoos: function() {
//return the promise directly.
return $http.get('/foos')
.then(function(result) {
//resolve the promise as the data
return result.data;
});
}
}
});
处理promise的then()
方法并从中获取数据。设置$ scope属性,然后执行您可能需要做的其他事情。
module.controller('MyCtrl', function($scope, myService) {
myService.getFoos().then(function(foos) {
$scope.foos = foos;
});
});
在原始答案的目标Angular 1.0.X中,Promise将由View进行特殊处理。当他们解析时,其解析值将绑定到视图。 在1.2.X中已弃用
module.controller('MyCtrl', function($scope, myService) {
// now you can just call it and stick it in a $scope property.
// it will update the view when it resolves.
$scope.foos = myService.getFoos();
});
我的React组件需要一个ajax调用来获取要呈现的数据。 最初,我使用该方法在Render中启动了一个ajax调用。这是我的伪代码... 在阅读了关于呈现调用的React文档后,我有点担心在呈现调用中更改存储区,即使是异步的。 我提出了另一种使用componentDidMount和ComponentDidUpDate的方法。这最终变得稍微复杂一些,因为在最初呈现组件时,componentDidM
问题内容: 我将开始使用AngularJS进行客户端和Django进行服务器端项目。 使他们像最好的朋友一样工作的最佳实践是什么(静态文件,身份验证,部署等) 问题答案: 有多种方法可以从Django模板中为客户端模板提供支持,以实现有趣的优化。但是,鉴于Django和AngularJS的模板语言之间的相似之处,在这里几乎不值得付出任何努力。对于此类大多数项目,我会将AngularJS的静态服务与
在MVC框架中,数据在模型中处理。 在AngularJs中,直接在控制器中处理数据是常见的,还是应该在服务中处理?
问题内容: 我刚开始学习Go,并通读现有代码以学习“其他人的做法”。在这种情况下,遍历使用go“工作区”,尤其是与项目依赖关系有关的地方。 在处理各种Go项目时,使用一个或多个Go工作区(即$ GOPATH的定义)的常见(或存在)最佳实践是什么?我应该期望有一个类似于我所有项目的中央代码存储库的Go工作区,还是在我处理这些项目时都明确将其分解并设置$ GOPATH(有点像python) virtu
问题内容: 我有一个Ajax调用,它可以更新数据库中的5,000条记录,因此需要很多时间。我有一个Ajax“正在加载图像”,它表明正在发生某些事情,但是我正在寻找一种更好的方式来显示“正在更新5000中的50 .....”,“正在更新5000中的200”或类似的东西。 在Ajax / jQuery中不做5000篇不同文章的最佳方法是什么? 问题答案: 我认为最好是使用Comet。 在Comet样式
问题内容: 我正在构建一个基于expressjs的应用程序,我想在其中记录所有事件。我可以找到温斯顿,这似乎很酷。无论如何,我正在寻找一种方法将其连接到我的expressjs应用程序。 我还想要在应用程序内部登录。我的要求不是那么简单,所以我想将所有内容记录在我的应用程序中(不仅是请求)。 我目前的情况: server.js (我想在此级别记录http请求) 路线/something.js con