【发布时间】:2016-12-04 06:36:21
【问题描述】:
请耐心等待 - 我是 AngularJS 新手。
我有一个表单,我想在我的应用程序的任何地方都可以使用它,我正在尝试弄清楚如何对其进行编码。我目前的尝试是将模式放入服务中,如下所示:
.service('NewObjectService', function() {
var svc = this;
svc.showModal = function() {
$ionicModal.fromTemplateUrl('template.html', {
scope: null, // what should I do here?
animation: 'slide-in-up'
}).then(function(modal) {
svc.modal = modal;
modal.show();
});
}
})
.controller('NewObjectController', function() {
$scope.$on('$ionicView.enter', function() {
console.log('NewObjectController');
// setup new object
})
})
然后,我可以在我的应用程序中的任何位置拨打NewObjectService.showModal() 并弹出模式。那部分正在工作。
我遇到的麻烦是我无法让我的控制器触发,所以初始化永远不会被调用并且我的新对象为空。
似乎我实际上应该从 NewObjectController 中调用模态来设置范围,但我尝试了,但我无法弄清楚如何从其他控制器中调用该控制器 - 因此是服务。
我知道我只是在做一些根本错误的事情,但我不确定它是什么。有什么帮助吗?
更新:我还尝试使用根范围广播从另一个控制器调用一个控制器:
.controller('MainCtrl', function() {
this.showModal = function() {
$rootScope.$broadcast('new_object:show_modal');
}
})
.controller('NewObjectCtrl', function() {
$rootScope.$on('new_object:show_modal', function() {
// show modal
})
})
我遇到的问题是在 MainCtrl 运行时尚未调用 NewObjectCtrl,因此它不会捕获广播事件。
【问题讨论】:
-
也许this 可以提供帮助
-
这似乎与我正在处理的问题不同。我不想共享控制器。