我刚刚开始熟悉AngularJS,但是我想构建一个Web视图,该视图具有一个视图,当服务器端数据库中发生某些更改时,该视图将为用户实时自动更新(不刷新)。
AngularJS可以自动为我处理(大部分)吗?如果是这样,起作用的基本机制是什么?
例如,您是否以某种方式设置AngularJS来定期轮询数据库以查找“模型”更改?还是使用某种类似Comet的机制来通知AngularJS客户端代码模型已更改?
在我的应用程序中,挑战在于其他(非Web)服务器端软件有时会更新数据库。但是,这个问题同样适用于纯Web应用程序,在该Web应用程序中,您可能有多个客户端通过AngularJS
Web客户端更改数据库,并且每个客户端都需要在其中一个更改数据库(模型)时进行更新。
您有几种选择…
您可以使用$timeout
和进行每X毫秒的轮询$http
,或者如果您使用的数据已连接到REST服务,则可以使用$resource
代替$http
。
您可以创建一个使用某些Websocket实现并用于scope.$apply
处理套接字推送的更改的服务。这是使用socket.io(一个node.js websocket库)的示例:
myApp.factory('Socket', function($rootScope) {
var socket = io.connect('http://localhost:3000');
//Override socket.on to $apply the changes to angular
return {
on: function(eventName, fn) {
socket.on(eventName, function(data) {
$rootScope.$apply(function() {
fn(data);
});
});
},
emit: socket.emit
};
})
function MyCtrl($scope, Socket) {
Socket.on('content:changed', function(data) {
$scope.data = data;
});
$scope.submitContent = function() {
socket.emit('content:changed', $scope.data);
};
}
编辑 :对于#3,我一直在使用Firebase来做到这一点。
问题内容: 我试图弄清楚Angular的工作原理,并在模型更改时无法更新视图。 的HTML JS http://jsfiddle.net/N2G7z/ 有任何想法吗? 问题答案: 正如上面提到的Ajay beniwal一样,您需要使用Apply来开始消化。
问题内容: 当前,我使用Visual Studio数据库项目,因此我可以一键将更改部署到数据库并将数据保留在数据库中。 现在,我希望能够在Entity Framework中创建模型并一键部署。 所以我得到了sql脚本来从Entity Framework创建数据库。我可以运行此脚本来创建数据库,但是我想将数据保留在数据库中。 有什么办法吗?有什么工具可以做到这一点?我应该用T4自己生成吗? 我使用C
问题内容: 我已经阅读了有关此问题的主题,例如:[\AngularJS中未更新视图,\但我仍然不明白如何在我的简单示例中应用它。 我有这个功能: 当代码中的其他地方更新时(用户单击,交互,发送XHR请求时),它不会更新我的视图。我知道我需要使用$apply做些事情,但我不知道在哪里以及如何做。 有人可以向我解释如何针对这个简单用例解决此问题吗? 我的模型看起来像这样(如果这个问题是必要的)-它里面
问题内容: 我已经定义了一个模型,并通过创建了它的关联数据库。现在,我已经向模型添加了一些字段,我syncdb再次尝试了,但是没有输出出现。尝试从模板访问这些新字段时,出现“ No Such Column”异常,使我相信syncdb实际上并未更新数据库。这里正确的命令是什么? 问题答案: 似乎你需要的是迁移系统。South真的很棒,工作非常好,有一些自动化工具可以简化你的工作流程。 注意:sync
问题内容: 启动器在游戏中最常见。想想英雄联盟,星际争霸II或几乎所有的MMO。在开始实际游戏之前,您有一个小型启动器应用程序,负责更新和修补。 我想通过我正在开发的特定非游戏应用程序来朝这个方向发展。启动器的概念非常有意义:它检查更新,替换适当的二进制文件/库,运行完整性检查并启动应用程序。但是,启动器如何自我更新?这往往是罕见的事件,但是如何完成呢?启动程序实际上是否只是覆盖当前正在运行的二进
问题内容: 我有一个扩展ExpandableListActivity的活动。我使用SimpleCursorTreeAdapter填充ExpandableListView。我的布局包含列表视图和空视图。在应用启动时,ExpandableListActivity自动选择要显示的右视图。 我的步骤: 应用启动,没有数据。(屏幕上的空白视图) 将一些数据插入db。 调用adapter.notifyData