我正在玩AngularJS.我想从一个服务中返回一个变量,它会让范围知道它何时发生了变化.
为了说明这一点,请查看www.angularjs.org中的示例,"连接后端".粗略地说,我们可以看到以下内容:
var projects = $firebase(new Firebase("http://projects.firebase.io"));
$scope.projects = projects;
Run Code Online (Sandbox Code Playgroud)
在此之后,对projects对象所做的所有更新(通过更新,无论是本地还是远程)都将自动反映在作用域绑定的视图上.
我怎样才能在我的项目中实现同样的目标?就我而言,我想从服务中返回一个"自我更新"变量.
var inbox = inboxService.inboxForUser("fred");
$scope.inbox = inbox;
Run Code Online (Sandbox Code Playgroud)
什么机制让它$scope知道它应该更新?
编辑: 为了回应这些建议,我尝试了一个基本的例子.我的控制器:
$scope.auto = {
value: 0
};
setInterval(function () {
$scope.auto.value += 1;
console.log($scope.auto.value);
}, 1000);
Run Code Online (Sandbox Code Playgroud)
而且,在我看来的某个地方:
<span>{{auto.value}}</span>
Run Code Online (Sandbox Code Playgroud)
不过,它只显示0.我做错了什么?
我制作了一个演示插件:http://plnkr.co/edit/dmu5ucEztpfFwsletrYW?p = preview
我$timeout用来伪造更新.
诀窍是使用普通的javascript引用:
$http它将为您触发摘要.$firebase和Restangular工作.服务:
app.factory('inboxService', function($http){
return {
inboxForUser: function(user){
var inbox = {};
$http.get('/api/user/' + user).then(function(response){
angular.extend(inbox, response.data);
})
return inbox;
}
};
});
Run Code Online (Sandbox Code Playgroud)
控制器:
app.controller('ctrl', function(inboxService){
$scope.inbox = inboxService.inboxForUser("fred");
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13896 次 |
| 最近记录: |