Javascript 无法识别AngularJS控制器函数

Javascript 无法识别AngularJS控制器函数,javascript,angularjs,angularjs-components,Javascript,Angularjs,Angularjs Components,我有一个AngularJS项目,其结构如第一张图片所示。 我使用定义为angularJS组件的自定义标记 我的主布局通过在选项卡中显示自定义标记来使用它。“我的主布局”组件中的代码段如下所示: <uib-tabset type="pills" active="$ctrl.getActiveTab()"> <uib-tab class="mormontTab" heading="Tab0" ng-show="$ctrl.drFormActive() &&

我有一个AngularJS项目,其结构如第一张图片所示。 我使用定义为angularJS组件的自定义标记

我的主布局通过在选项卡中显示自定义标记来使用它。“我的主布局”组件中的代码段如下所示:

<uib-tabset type="pills" active="$ctrl.getActiveTab()">

    <uib-tab class="mormontTab" heading="Tab0" ng-show="$ctrl.drFormActive() && $ctrl.daFormInactive()" ng-click="$ctrl.setActiveTab(0)">
        <drform-tag></drform-tag>
    </uib-tab>

    <uib-tab class="mormontTab" heading="Tab1" ng-show="$ctrl.daFormActive() && $ctrl.drFormInactive()" ng-click="$ctrl.setActiveTab(1)">
        <daform-tag></daform-tag>
    </uib-tab>

    <uib-tab class="mormontTab" heading="Tab2" ng-click="$ctrl.setActiveTab(2)">
        <mydocs-tag></mydocs-tag>
    </uib-tab>

    <uib-tab class="mormontTab" heading="Tab3" ng-click="$ctrl.setActiveTab(3)">
    <fluxdocs-tag></fluxdocs-tag>
    </uib-tab>

    <uib-tab class="mormontTab" heading="Tab4" ng-click="$ctrl.setActiveTab(4)">Tab  content
    </uib-tab>

    <uib-tab class="mormontTab" heading="Tab5" ng-click="$ctrl.setActiveTab(5)">Tab  content
    </uib-tab>
</uib-tabset>
上述功能的主要目的是获取用户输入(数字),并在禁用的输入中显示用户在多个输入中输入的数字之和。因此,显示用户输入的数字总和的禁用输入使用“值”属性在我的自定义标记内引用上述函数。例如:

<label>Sum</label>
<input type="number" class="form-control mormontInput" value="{{$ctrl.getSumaCercetareAprobata()}}" placeholder="0" disabled>
Sum
我的问题是,当加载组件时,控制台中会出现如下错误:

<uib-tabset type="pills" active="$ctrl.getActiveTab()">

    <uib-tab class="mormontTab" heading="Tab0" ng-show="$ctrl.drFormActive() && $ctrl.daFormInactive()" ng-click="$ctrl.setActiveTab(0)">
        <drform-tag></drform-tag>
    </uib-tab>

    <uib-tab class="mormontTab" heading="Tab1" ng-show="$ctrl.daFormActive() && $ctrl.drFormInactive()" ng-click="$ctrl.setActiveTab(1)">
        <daform-tag></daform-tag>
    </uib-tab>

    <uib-tab class="mormontTab" heading="Tab2" ng-click="$ctrl.setActiveTab(2)">
        <mydocs-tag></mydocs-tag>
    </uib-tab>

    <uib-tab class="mormontTab" heading="Tab3" ng-click="$ctrl.setActiveTab(3)">
    <fluxdocs-tag></fluxdocs-tag>
    </uib-tab>

    <uib-tab class="mormontTab" heading="Tab4" ng-click="$ctrl.setActiveTab(4)">Tab  content
    </uib-tab>

    <uib-tab class="mormontTab" heading="Tab5" ng-click="$ctrl.setActiveTab(5)">Tab  content
    </uib-tab>
</uib-tabset>

由于我对AngularJS比较陌生,我可能做错了什么。 有人能帮我吗

我应该补充一点,使用ng show属性显示或不显示包含有问题的自定义标记的uib选项卡

为什么错误会说“函数名”不是控制器中的函数$ctrl

更新:当我在uib选项卡集之外使用自定义组件时,它可以正常工作。只有在uib选项卡集中使用时,才会导致所述问题


非常感谢。

您在这里输入了ctrl而不是$ctrl

 $ctrl.getSumaCercetare = function () {
            return (ctrl.getSumaCercetareSolicitata() + $ctrl.getSumaCercetareAprobata());
        };

但我不认为这会导致你的问题,这是我在黑暗中拍摄的照片:而不是“$ctrl=this;”至少您需要说“var$ctrl=this;”


实际上,您不应该在控制器中使用“$ctrl”(这只是在模板中使用);您应该使用类似“var vm=this;”的内容或者只使用“this”。

您是否尝试过使用ng value=“$ctrl.GetSumacerceAreaProbata()”或ng bind=“$ctrl.GetSumaceCeAreaProbata()”我尝试过,但很奇怪:在第一次livereload之后,它工作了,但在重新启动应用程序后,同样的问题出现了。是的,确实,“$”丢失了。但我认为问题在某种程度上与作用域有关(我使用的uib选项卡集可能有自己的作用域和控制器)。。。然而,我还没有设法解决它。