我一直在使用优秀的ngStorage插件来处理角度。
设置时,您可以声明$scope-node
连接到localstorage
,如下所示:
$scope.$store = $localStorage;
现在可以在所有控制器等中访问 $scope.$store
。
我想从localstorage
中删除一些内容,然后使用广播来访问它。
在我的初学者中我表演过:
$scope.taskarr = [];
$rootScope.$broadcast('taskarrbroad',$scope.taskarr);
为了add
,remove
和$watch
此数组,所提到的内容似乎都不起作用。
在这里,没有任何事情发生
controller('textController', function($scope,$routeParams){
$scope.$watch('taskarrbroad.length', function(){
console.log($scope.taskarr.map(function(task){
return task.content;
}).join('\n'));
})
})
在这里,我可以访问$scope.taskarr
并更新它,但视图不会更新。 $scope.$apply()
也没有帮助(超时是因为它已经在摘要中了。
controller('stateSwitchController', function($scope, $routeParams, $timeout){
$scope.taskarr = $scope.$store[$routeParams.state].taskarr || [];
console.log($scope.taskarr);
$timeout(function() {
$scope.$apply();
})
}).
答案 0 :(得分:1)
$broadcast
是一种将事件发送到应用程序其他部分的方法。当您播放某个活动时,即使使用$on()
,其他人也必须收听该活动。类似的东西:
// Some controller
$rootScope.$broadcast('my-event', eventData);
// Some other controller
$scope.$on('my-event', function() {
console.log('my-event fired!')
});
$watch
是另一回事,它本身不是事件监听器,它是一种附加函数的方法,该函数在该值发生变化时被调用,并且该值必须在作用域上。所以你的手表应该是这样的:
$scope.$watch('taskarr.length', function(){
});
因为您已在范围上命名数组taskarr
。