javascript - 如何继承和重写angularjs(java pendent)中的 Controller 方法?

标签 javascript java angularjs

我有一个简单的 Controller ,并且想引入一个非常相似的附加 Controller ,但不需要复制太多代码。

angular.module('test').controller('parentController', parentController);
parentController.$inject = ['$scope', '$location', 'someService'];

function myController($scope, $location, someService) {
    var params = getQueryString();
    var rsp = executeQuery(params);

    processResponse(rsp);

    function getQueryString() {
        return "?param=1&someparam=2";
    }

    function executeQuery(params) {
        ...
    }

    function processResponse(rsp) {
           //process rsp, convert some parts, and populate model properties, like
           $scope.model.prop1 = rsp.data.prop1;
    }
};

现在我想创建一个与 parentController 代码 90% 相同的 Controller 。主要区别:

  • get getQueryString() 应该返回不同的查询
  • $scope 的响应属性 setter 应包含 1 个已更改的行
  • 我需要在新 Controller 内部添加额外的filter函数,这些函数应该只存在于新 Controller 中,而不适用于parentController

来自java,我会使用继承和重写方法来解决这个问题,例如:

public cass ParentClass {
    String getQueryString() {
        return "?param=1&someparam=2";
    }
}

public class CustomClass extends ParentClass {
    @Override
    String getQueryString() {
        return "?customparam=1";
    }

    @Override
    void processResponse(rsp) {
         super.processResponse(rsp);
         //read "rsp.paramX" additionally
    }
}

但是我怎样才能用angularjs实现类似的效果呢?

最佳答案

假设您有以下结构:

<div ng-controller="parentCtrl">
   ...
   <div ng-controller="childCtrl"></div>
</div> 

由于子 Controller 位于父 Controller 范围内,因此它可以访问父 Controller 的所有方法/变量,只要它们是在父 Controller 的 $scope 上定义的(即 $scope.someVar)。

更新

如果 2 个 Controller 没有父/子关系,则需要使用 service ,您将在其中放置共享逻辑,然后您可以在启动序列的服务上定义一个 init 函数。

因此,在 Controller 中,您所要做的就是调用 myService.init() (并且可能传递一些参数)

关于javascript - 如何继承和重写angularjs(java pendent)中的 Controller 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37696559/

相关文章:

javascript - ng-if 在函数上无法正常工作

javascript - Md-switch 在 ng-repeat 中不起作用

javascript - 如何在 javascript 中运行对象的 onEvent 方法?

java - java在开发中通常会占用所有这些内存吗?

java - 我只想在多级继承中调用子类构造函数?

Java IE 提供旧的 HTTP Servlet session 对象

javascript - ng-选择第一个不隐藏的

javascript - 防止 Jquery .click 切换功能因过度点击而反复运行

java - java中如何向多个地址发送电子邮件

html - ionic 应用程序视频无法在移动设备上播放