你好我刚接触到angularjs,这里我有两个js文件,我需要通过 即使在一个js文件中的值到另一个js文件 angularjs.since我需要显示符合用户和的导航栏 管理员登录。
<form name="vm.loginForm" method="post" class="form-horizontal" data-ng-submit="vm.login(vm.getUser);">
<div class="col-xs-12 input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
<input id="login-username" type="email" class="form-control" name="username" placeholder="Email" data-ng-model="vm.getUser.Username" required>
</div>
<div class="col-xs-12 input-group margin-top-20">
<span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
<input id="login-password" type="password" class="form-control" name="password" placeholder="Password" data-ng-model="vm.getUser.Password" required value="admin">
</div>
<div class="col-xs-12 margin-top-20">
<span class="pull-left">
<input id="login-remember" type="checkbox" name="remember" value="1"> Remember me
</span>
<span class="pull-right">
<a href="#">Forgot Password?</a>
</span>
</div>
<div class="col-xs-12 margin-top-20">
<button type="submit" class="btn btn-block btn-success">
Login
<i class="fa fa-refresh fa-spin" ng-show="vm.login.progress"></i>
</button>
</div>
</form>
logincrl.js
login.controller("loginCtrl", ['$rootScope', '$scope', '$state', '$location', 'Flash', 'apiService', '$http',
function($rootScope, $scope, $state, $location, Flash, apiService, $http) {
var vm = this;
$scope.title="Test";
vm.login = function(data) {
vm.login.progress=true;
var url = "http://52.9.55.95:91/api/Login/ValidateUser?username=" + $scope.vm.getUser.Username + "&password=" + $scope.vm.getUser.Password;
$http({method: 'GET', url: url}).
success(function(data, status, headers, config) {
$scope.RoleCode == data.RoleCode;
vm.login.progress=false;
$state.go('app.dashboard');
}).
error(function(data, status, headers, config) {
vm.login.progress=false;
swal({ title: "Warning!", text: "Invalid User Credentials!", type: "warning", confirmButtonText: "OK" });
});
}
}
]);
在这个js文件中我需要传递像$ scope.role =这样的值 data.RoleCode到另一个js文件。
appctrl.js
app.controller("appCtrl", ['$rootScope', '$scope', '$state', '$location', 'Flash', 'appSettings',
function ($rootScope, $scope, $state, $location, Flash, appSettings) {
if($scope.Rolecode == 01){
vm.menuItems = [
// {
// title: "Dashboard",
// icon: "dashboard",
// state: "dashboard"
// },
{
title: "Employees",
icon: "users",
state: "employees"
},
{
title: "Customers",
icon: "users",
state: "customers"
},
}else(Rolecode=02){
vm.menuItems = [ {
title: "Customers",
icon: "users",
state: "customers"
},
]}
]}]);
注意:根据登录信息,我需要显示菜单栏,RoleCode = 01表示Admin应显示,Rolecode = 02表示用户一次 显示请让我知道如何传递价值,请做一个 小提琴并给它很容易理解,
app.html
<section class="sidebar">
<!-- Sidebar user panel -->
<ul class="sidebar-menu">
<li class="treeview" ui-sref-active="active" ng-click="vm.sideBar();" data-ng-repeat="menu in vm.menuItems">
<a ui-sref="app.{{menu.state}}">
<i class="fa fa-{{menu.icon}}"></i> <span>{{menu.title}}</span>
</a>
</li>
</ul>
</section>
任何人都可以帮助传递价值。在一个js到另一个js 文件不同的控制器和不同的文件
答案 0 :(得分:1)
如果您只想存储Role值,可以使用$ rootScope.Role = data.RoleCode,然后将$ rootScope注入另一个控制器并获取$ rootScope.Role。 或者您可以使用$ emit和$ broadcast在控制器之间传递值,谷歌上有很多可用的材料。
答案 1 :(得分:1)
我会在这里使用list_1 = []
list_2 = []
for item in list_full:
list_1.append(item[:2])
list_2.append(item[2:])
执行此操作,您可以创建服务并将服务注入每个控制器,然后您可以使用角色,您可以在每个页面中访问此角色,它可以在每个控制器中重复使用
答案 2 :(得分:0)
您可以使用AngularJs服务将值从一个控制器传递到另一个控制器。假设您在不同的js文件中有firstCtrl,secondCtrl和yourService,那么您必须在index.html中添加对这些文件的引用。我提供了一个示例代码。希望你能从中得到一个想法。
的index.html
<script src="firstCtrl.js"></script>
<script src="secondCtrl.js "></script>
<script src="yourService.js"></script>
控制器和服务
/* Assume firstCtrl in seperate js file */
angular.module('yourAppName').controller('firstCtrl', function($scope, yourService) {
/*Set data to service*/
yourService.data = $scope.data;
});
/*End firstCtrl*/
/* Assume secondCtrl in seperate js file */
angular.module('yourAppName').controller('secondCtrl', function($scope, yourService) {
/*Get data from service*/
var data = yourService.data;
});
/*End secondCtrl*/
/* Assume yourService in seperate js file */
angular.module('yourAppName').factory('yourService', function() {
var data = null;
return {
data: data
}
});
/*End yourService*/
答案 3 :(得分:0)
我们可以创建一个{'a': 1, 'b': 4, 'c': 139}
来设置和获取我们想要使用它的控制器函数中服务的service
和controllers
之间的数据。
服务:
inject
控制器:
<强> loginctrl.js 强>
app.service('setGetData', function() {
var data = '';
getData: function() { return data; },
setData: function(requestData) { data = requestData; }
});
<强> appctrl.js 强>
app.controller('loginctrl', ['setGetData',function(setGetData) {
// To set the data from the one controller
$scope.RoleCode == data.RoleCode;
setGetData.setData($scope.RoleCode);
}]);
在这里,我们可以看到app.controller('appctrl', ['setGetData',function(setGetData) {
// To get the data from the another controller
var res = setGetData.getData();
console.log(res);
}]);
用于设置数据,loginctrl
用于获取数据。因此,我们可以将数据从一个控制器共享到另一个控制器。