简体   繁体   English

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

[英]Angular js - Call function inside controller from view in ng-admin

I am working with the feature of multiple languages for ng-admin. 我正在为ng-admin使用多种语言的功能。 In the file header.html, I have added a dropdown with a list of languages. 在文件header.html中,我添加了带有语言列表的下拉列表。 Clicking each option fires a function call. 单击每个选项将触发一个函数调用。

The function itself is inside a controller in /js/main.js 该函数本身在/js/main.js中的控制器内部

Clicking in any of the languages results in ReferenceError: serve_language is not defined . 单击任何一种语言都会导致ReferenceError:serve_language未定义

This is the content of both files: 这是两个文件的内容:

header.html 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 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"); 
    };
}]);

I also tried calling the function as languageCtrl.serve_language(), but that resulted in ReferenceError: languageCtrl is not defined 我也尝试将函数调用为languageCtrl.serve_language(),但这导致ReferenceError:未定义languageCtrl

You should change onclick to ng-click 您应该将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>

Don't use href="#" and ng-click else it will redirect to your default routing(if routing is added). 不要使用href="#"并单击ng,否则它将重定向到您的默认路由(如果添加了路由)。

Use ng-click in place of onclick . 使用ng-click代替onclick

Use ng-click as does not support onclick 使用ng-click因为不支持onclick

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM