学习AngularJS对我来说是一项工作,所以我只想了解为什么/何时我们应该在下面的特定情况下使用一个。这只是味道的问题还是比这更重要?看下面的例子。
在这两种情况下,当用户单击确定按钮,create()
父控制器的功能从子控制器调用。
RESOLVE风格
CreateController
...
var vm = this;
vm.create = create;
function create() {
console.log('Created!');
}
vm.openCreateModal = function() {
vm.modalInstance = $uibModal.open({
...
resolve: {
create: function() {
return create;
},
// Others if any
}
});
}
...
CreateModalController
...
vm.ok = function() {
create();
$uibModalInstance.close('ok');
};
...
SCOPE风格
CreateController
...
var vm = this;
vm.create = create;
function create() {
console.log('Created!');
}
vm.openCreateModal = function() {
vm.modalInstance = $uibModal.open({
...
scope: $scope,
resolve: {
}
});
}
...
CreateModalController
...
vm.ok = function() {
$scope.$parent.vm.create();
$uibModalInstance.close('ok');
};
...
更新
实际的原因,我问这个问题时,accessining /注射父/根/容器状一个serv的对象在另一个控制器/服务中的冰/控制器在我使用的某些语言/框架中被认为是“不好的做法”。
'$ parent'的使用是一个[code smell](https://en.wikipedia.org/wiki/Code_smell),是一个更深层次问题的症状。 “解析”属性更通用且更健壮,因为它对于模态的每个实例都可能不同。它也可以用承诺来解决。 – georgeawg
@georgeawg我加了“更新”部分来解释为什么我想出这个问题。你踩在它上面!由于某种原因,我只是不喜欢'$ scope。$ parent ...'。我只需要等待,看看别人怎么说的。 – BentCoder