假设我有一系列我试图分页的文章。
我正在使用$on("change")
事件来收听对index
和limit
.controller('articlesCtrl', ["$scope", "$firebase", "$stateParams", function($scope, $firebase, $stateParams) {
var limit = 2;
var index = $stateParams.id;
var articlesRef = new Firebase("https://example.firebaseio.com/articles").startAt(null, index).limit(limit);
var obj = $firebase(articlesRef);
obj.$on("change", function() {
var keys = obj.$getIndex();
index = keys[keys.length-1];
console.log(obj);
});
$scope.update = function(){
limit = limit + 2;
obj = $firebase(articlesRef.startAt(null, index).limit(limit));
}
}]);
我注意到的是 - 初始加载 $on("change")
事件触发两次。
并且每次后续调用更新index
或limit
都不会触发$on("change")
事件。
<button type="button" ng-click="update();">Update</button>
答案 0 :(得分:2)
每次触发$ scope.update时,都会将obj
变量分配给新引用。但是,您只能将obj.$on(change)
附加到原始obj
。
这可能会通过一些实验进行优化;这是一个让你开始的快速蛮力:
var limit = 2;
var index = $stateParams.id;
var articlesRef = new Firebase("https://example.firebaseio.com/articles");
$scope.update = update;
update(); // initialize
function update(){
limit = limit + 2;
var obj = $firebase(articlesRef.startAt(null, index).limit(limit));
obj.$on("loaded", function() {
var keys = obj.$getIndex();
index = keys[keys.length-1];
console.log(obj);
});
}