Fab*_*lio 6 php ajax angularjs laravel-4
我首先说我真的很新,angularJs我觉得它对Web应用程序的大环境非常有用.
经过一些研究和文档记录后,我得到了一些问题,首先它让我对如何将它实现到服务器端语言(在我的情况下基于laravel 4.1的PHP)感到困惑,因为它angularJs有路由和模板等...所以它是一个适当的框架,甚至可以独立工作.
让我们更好地了解我想要到达的地方,以了解这个2框架的工作流程.
第一个问题
我如何在一些资源上看到angularJs很容易在json中显示结果并与dom绑定.我甚至看到一些开发人员在第一次加载dom时使用angularJs打印出结果,而不是在laravel控制器上使用单个函数并使用laravel处理结果.
我认为它在兼容性方面不是很有用,因为角度正在工作IE 8及之后如果我禁用javascript同样我看不到结果.相反,如果我使用laravel 4如何第一个处理程序的第一个结果,我将永远看到它!这是我看到的一个例子.
路线Laravel
// set 2 types of route, the first for get the json results for do handle to Angular
// the second route for display the view
Route::get('users','UserController@getUsers');
Route::get('/','UserController@getIndex);
Run Code Online (Sandbox Code Playgroud)
UserController Laravel
public function getUsers() {
$users = User::all();
return $users; // return all users in json
}
public function getIndex() {
return View:make('index');
}
Run Code Online (Sandbox Code Playgroud)
AngularJs
module.controller('UserCtrl', function($scope,$http) {
users: function() {
return $http.get('/users').then(function(result){
return result.data;
});
};
});
Run Code Online (Sandbox Code Playgroud)
在视图上
<div ng-repeat="users in user">{{ user }} </div>
Run Code Online (Sandbox Code Playgroud)
嘿! 如果我的页面有20个结果查询,我不想做20个路由和角度函数.我说的是对的吗?但是,如果他们这样做,应该是某种原因.
第二 - 问题
在我使用带有laravel 4.1的angularjs之前我怎么说有可能我会使用angularJs的路线?我的观点是否定的.因为我用laravel 4来处理我的路线.
第3 - Quenstion
调用后显示结果ajax并将其绑定到模板的最佳方法.也许这个问题可以完全违背我的第一个问题,因为如果我使用该逻辑设置我的应用程序,我已准备好将来调用ajax,而不重写我的结果的部分模板.
假设我想要分页以前的结果,所以我会去打电话ajax显示下一个或上一个结果.如果我遵循我所看到的逻辑(第一个例子),我唯一要做的就是将新结果推送到前一个对象上json.
相反,如果我使用laravel我的结果的第一个处理程序(正常返回视图和foreach),在调用之后ajax我必须创建单个模板以显示具有相同样式的结果并附加结果.你如何显示结果,哪种方法最好?
首先,AngularJs 本身处理前端路由。你的 laravel 服务应该仅用作 RESTful api (如 carlosdubusm 提到的)。
如果您不想进行 20 次调用,您始终可以进行 Angular 服务,该服务将处理一次调用以获取您需要的所有数据,解析它并提供给控制器、指令等。
Angular 是异步工作的,因此如果你用 Promise 包装代码,它将自行处理数据更改。
我希望这是您想知道的。
//编辑:
承诺示例
$scope.user = {
name : '',
email : ''
};
$scope.updateUserInfo = function (response) {
$scope.user = response;
};
// users model have rest calls to api using restangular
usersModel.getMyInfo()
.then($scope.updateUserInfo);
Run Code Online (Sandbox Code Playgroud)
服务样本
'use strict';
app.factory('alertService', function ($timeout){
return new AlertService($timeout);
});
var AlertService = function($timeout) {
this.queue = [];
this.alerts = [];
var AlertService = this;
this.TYPE_INFO = 0;
this.TYPE_SUCCESS = 1;
this.TYPE_ALERT = 2;
this.TYPE_ERROR = 3;
this.add = function (msg, type) {
var alert = new AlertItem(msg, type);
AlertService.queue.push(alert);
AlertService.alerts.push(alert);
$timeout(function (){
AlertService.closeAlert(alert);
}, 10000);
};
this.closeAlert = function (alert) {
return AlertService.queue.splice(AlertService.queue.indexOf(alert),1);
};
this.getAlerts = function (){
return AlertService.queue;
};
this.getAll = function () {
return this.alerts;
};
};
var AlertItem = function(msg, type) {
var TYPE_CLASS = {
0: "alert-info",
1: "alert-success",
2: "",
3: "alert-error"
};
var type = type;
var msg = msg;
this.getType = function() {
return type;
};
this.getClass = function () {
return TYPE_CLASS[type];
};
this.getMsg = function () {
return msg;
};
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1874 次 |
| 最近记录: |