Angular js - 在ng-admin中从视图中调用控制器内部的函数

时间:2017-07-05 10:07:29

标签: angularjs controller ng-admin

我正在使用ng-admin的多种语言功能。 在文件header.html中,我添加了一个包含语言列表的下拉列表。单击每个选项将触发函数调用。

函数本身位于/js/main.js

中的控制器内

点击任何一种语言会导致 ReferenceError:未定义serve_language

这是两个文件的内容:

了header.html

<ul class="nav navbar-top-links navbar-right hidden-xs">
    <li uib-dropdown ng-controller="languageCtrl">
        <a uib-dropdown-toggle href="#" aria-expanded="true">
            <i class="fa fa-user fa-lg"></i>&nbsp; Language&nbsp;<i class="fa fa-caret-down"></i>
        </a>
        <ul class="dropdown-menu dropdown-user" role="menu">
            <li><a href="#" onclick="serve_language('en')"><i class="fa fa-sign-out fa-fw"></i> English</a></li>
            <li><a href="#" onclick="serve_language('ge')"><i class="fa fa-sign-out fa-fw"></i> German</a></li>
            <li><a href="#" onclick="serve_language('fr')"><i class="fa fa-sign-out fa-fw"></i> French</a></li>
            <li><a href="#" onclick="serve_language('sp')"><i class="fa fa-sign-out fa-fw"></i> Spanish</a></li>
        </ul>
    </li>
</ul>

main.js

'use strict'
var myApp = angular.module('myApp', ['ng-admin','ng-admin.jwt-auth', 'nvd3']);
myApp.controller('languageCtrl', ['$translate', '$scope', function ($translate, $scope) {
    $scope.serve_language = function (langKey) {
       console.log("@langctrl"); 
    };
}]);

我也尝试将该函数调用为languageCtrl.serve_language(),但这导致 ReferenceError:未定义languageCtrl

3 个答案:

答案 0 :(得分:1)

您应该将onclick更改为ng-click

<ul class="dropdown-menu dropdown-user" role="menu">
            <li><a ng-click="serve_language('en')"><i class="fa fa-sign-out fa-fw"></i> English</a></li>
            <li><a ng-click="serve_language('ge')"><i class="fa fa-sign-out fa-fw"></i> German</a></li>
            <li><a ng-click="serve_language('fr')"><i class="fa fa-sign-out fa-fw"></i> French</a></li>
            <li><a ng-click="serve_language('sp')"><i class="fa fa-sign-out fa-fw"></i> Spanish</a></li>
        </ul>

答案 1 :(得分:1)

请勿使用href="#"并点按其他内容,否则会重定向到您的默认路由(如果添加了路由)。

使用ng-click代替onclick

答案 2 :(得分:0)

使用ng-click不支持onclick