2017-07-05 34 views
0

我正在为ng-admin使用多种语言的功能。 在文件header.html中,我添加了一个包含语言列表的下拉列表。点击每个选项会触发一个函数调用。Angular js - 从ng-admin中查看控制器内部的函数

函数本身是在/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未定义

回答

1

你应该改变onclickng-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

不要使用href="#"和NG-单击否则会重定向到您的默认路由(如果添加路由)。使用ng-click代替onclick

0

使用ng-click作为不支持onclick