无需接触核心控制器就可以调用扩展控制器并访问核心控制器功能

时间:2018-06-12 06:54:15

标签: javascript jquery angularjs angularjs-scope

我有一个核心控制器

(function() {
    "use strict";

    function FieldSettingsOverlay($scope, localizationService, formService, userService) {
        var vm = this;
        vm.changeValidationType = changeValidationType;

        vm.validationTypes = [{
            "key": "number",
            "pattern": "^[0-9]*$"
        }, {           
            "key": "url",
            "pattern": "https?\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,}"
        }];

        function changeValidationType(selectedValidationType) {
            console.log("Parent")
        }
    }
    angular.module("umbraco").controller("UmbracoForms.Overlays.FieldSettingsOverlay", FieldSettingsOverlay);

})();

从这个父控制器我有一个名为vm.validationTypes的数组,这个目前只有2个对象,但我必须添加3个或4个对象。

所以我通过扩展核心控制器

创建了另一个控制器

// CustomValidation

angular.module("umbraco").controller('FromValidationCustomController', function ($scope, $controller) {
  'use strict';

console.log("inistiate")
  angular.extend(this, $controller('UmbracoForms.Overlays.FieldSettingsOverlay', {$scope: $scope}));
  $scope.changeValidationType=function(){

    console.log($scope.validationTypes)
  }
})

新的扩展控制器使用名为changeValidationType的相同函数它甚至不调用它只调用父函数

任何想法我错过了什么?为什么这个控制器里面没有调用函数

1 个答案:

答案 0 :(得分:0)

发布的代码有问题。 请检查有效的更新的最小代码部分:



<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.15/angular.js"></script>

<div ng-app="example1">
    <div ng-controller="FromValidationCustomController as C">
        <span><b>From Parent Controller:</b> {{C.changeValidationType()}}</span>
    </div>
</div>
&#13;
outer(as.vector(tt[,1]), as.vector(d[,1]), function(x,y){x*y/(td*ee)})
&#13;
&#13;
&#13;