gpt4 book ai didi

javascript - AngularJS 1.6 中的方法多态/继承

转载 作者:行者123 更新时间:2023-11-30 21:09:51 25 4
gpt4 key购买 nike

我在 AngularJS 中遇到 Controller 覆盖问题。

问题来了:

    function UiCoreController($scope, ...) {
'use strict';

angular.extend(vm, {
validatePremium: validatePremium
}

function validatePremium() {
console.log('validate premium in core controller');
// validation logic
vm.calculatePremium();
}

function calculatePremium() { ... }
}

function UiAskController($rootScope, $scope, $controller) {
'use strict';

var vm = this;
var core = $controller('UiCoreController', { $scope: $scope });

angular.extend(this, core);

angular.extend(vm, {
...
}
function calculatePremium() { ... }
}

当我从模板(通过 ng-change 指令)调用 validatePremium() 方法时 - 它是从 UiCoreController 调用的,但是 calculatePremium() 未被更具描述性的 UiAskController::calculatePremium() 调用。

仅当将整个 ​​validatePremium() 方法复制粘贴到 UiAskController 时才有效,但在我看来这就像代码重复。

谁能帮我用类似 Java 的代码实现对 calculatePremium() 的调用?

最佳答案

Javascript 不像 Java 那样面向对象编程,因此没有多态性和继承性。所以简短的回答是。仅使用 Controller 无法实现您想要的。函数 calculatePremium 绑定(bind)到 Controller 作用域,您肯定不想在 Controller 之间共享作用域。

您可以将此方法写入$rootScope,但这不是好的做法


我会将 vm.calculatePremium() 逻辑投入使用。它是制作此类东西的合适场所。

请记住, Controller 的主要目的是将您的数据绑定(bind)到 DOM a.e.使用范围渲染 View 。

由于 Service 是一个单例,您可以在服务中进行所有数据操作以避免代码重复并简化代码维护

关于javascript - AngularJS 1.6 中的方法多态/继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46268074/

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