gpt4 book ai didi

javascript - AngularJS 从模态 Controller 访问父 Controller 属性 - 解析与 $scope

转载 作者:行者123 更新时间:2023-12-03 03:41:29 28 4
gpt4 key购买 nike

学习 AngularJS 对我来说是一项正在进行的工作,所以我只想了解为什么/何时我们应该在下面的特定情况下使用一个而不是另一个。这只是品味问题还是更多?请参阅下面的示例。

在这两种情况下,当用户单击确定按钮时,子 Controller 会调用父 Controller 的create()函数。

解决风格

创建 Controller

...

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
}
});
}

...

创建ModalController

...

vm.ok = function() {
create();
$uibModalInstance.close('ok');
};

...

范围风格

创建 Controller

...

var vm = this;

vm.create = create;

function create() {
console.log('Created!');
}

vm.openCreateModal = function() {
vm.modalInstance = $uibModal.open({
...
scope: $scope,
resolve: {
}
});
}

...

创建ModalController

...

vm.ok = function() {
$scope.$parent.vm.create();
$uibModalInstance.close('ok');
};

...

更新

我问这个问题的实际原因是,在我使用的某些语言/框架中,访问/注入(inject)一个服务/ Controller 的父/根/容器之类的对象到另一个 Controller /服务中被认为是“不好的做法” .

最佳答案

resolve 的想法是,它会在初始化其余代码之前先运行它。通常,您会在 routing 中使用 resolve,如下所示:

$routeProvider
.when('/', {
templateUrl: "views/view.html",
caseInsensitiveMatch: true,
resolve: {
load: function() {
localStorage['Location'] = "/View";
}
}
})

在上面的示例中,resolve 将在我的 Controller 初始化之前触发load 函数。另一方面,scope 用于直接绑定(bind)到 Controller 或指令中的某些内容。在触发函数并绑定(bind)到 Controller 和指令之间的值时,您应该使用范围

根据下面的注释添加到此内容,如果解决失败,它将拒绝模式并且窗口将不会打开。

关于javascript - AngularJS 从模态 Controller 访问父 Controller 属性 - 解析与 $scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45600349/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com