【发布时间】:2015-09-04 12:07:34
【问题描述】:
我有一个简单的 angularjs 控制器,引用为 someCtrl,它包含以下代码:
function testing() {
console.log("Hello there.");
}
$document.on('click', function(e) {
testing();
});
this.getView = function(value) {
return viewService.getView(value);
};
this.setView = function(value) {
viewService.setView (value);
};
this.destroy = function() {
$state.reload('default_state');
};
当点击事件发生时,testing() 函数执行并且一些东西被记录到控制台。后来我的默认 viewA 使用 service 和 ng-show 指令更改为 viewB:
<div ng-show="someCtrl.getView('viewA')">
Content
</div>
<div ng-show="someCtrl.getView('viewB')">
<a ng-click="someCtrl.setView('viewA'); someCtrl.destroy();">go to viewA</a>
</div>
然后,当点击事件发生时,如果我一次又一次地改变视图,testing() 函数每次点击执行两次甚至更多次......为什么会发生这种情况?控制器的两个实例是否存在? $state.reload 不会杀死一个控制器实例的属性吗?我真的很感激一些帮助:)
【问题讨论】:
标签: javascript angularjs controller state reload