在我的主页(views / home.PHP)中,我添加了一个用于加载不同页面的ng-view.在这里,我使用angularjs ngRoute进行路由.
这是我的代码.
var myApp = angular.module("myApp",["ui.bootstrap","ui.router","ngRoute"]); myApp.config(function($routeProvider) { $routeProvider .when("/",{ templateUrl : "application/pages/mainpage.PHP" }) .when("/about",{ templateUrl : "application/pages/about.html" }) .when("/services",{ templateUrl : "application/pages/services.html" }) .otherwise("/",{ templateUrl: "application/pages/mainpage.PHP" }); });
在mainpage.PHP里面,我列出了一些驻留在json文件(datas / data.json)中的配置文件内容(虚拟内容).所有内容都列出了.在这个列表中,我放置了一个按钮,其中ng-click =“myName”
这是代码:
<div class="container" ng-controller="ListController"> <div class="row"> <div class="col-lg-12 text-center"> <h1>Starter Template</h1> <p class="lead">Complete with pre-defined file paths that you won't have to change</p> <div class="row"> <div class="col-sm-6 col-md-4 wow zoomIn" data-wow-delay="0.5s" ng-repeat="items in artists"> <div class="thumbnail"> <img ng-src="{{settings.base_url}}/application/assets/images/profile/{{items.shortname}}.jpg" alt="..."> <div class="caption"> <h3>{{items.name}}</h3> <p>{{items.bio}}</p> <p><a href="javascrip:void(0);" class="btn btn-primary" ng-click="myName()" role="button">Button</a> <a href="#" class="btn btn-default" role="button">Button</a></p> </div> </div> </div> </div> </div> </div> <!-- /.row --> </div>
我的所有js代码都在app.js(assets / js / app.js)中包含了Angular Js.在这个js文件中,我设置了一个与codeigniter config.PHP文件相同的base_url变量
$config [‘base_url’] =’http://localhost/AngularExPack/Angular_Bootstrap_CI_1/‘;
在app.js里面
var base_url =’http://localhost/AngularExPack/Angular_Bootstrap_CI_1/‘
当我点击我的按钮与ng-click =“myName”我想得到一个控制器(Codeigniter控制器),并希望在该控制器内执行一个功能.这里我使用auth.PHP(controllers / auth.PHP)和函数名作为functionOne();
public function functionOne() { /*$this->load->view('home1');*/ echo "hai"; }
对于iam使用$hhtp.post和var base_url作为路径.但我没有得到那个输出,它没有传递给那个控制器.
myApp.controller('ListController',['$scope','$http','settings',function($scope,$http) { $http.get('application/datas/data.json').success(function(data) { $scope.artists = data; }); $scope.myName = function() { alert("hai1"); /**/ $http.post(base_url + 'auth/functionOne').success(function(response) { $scope.data = response console.log($scope.data); alert($scope.data); }); } }]);
ng-click =“myName”功能正常.但它没有传递给控制器auth.PHP中的函数functionOne.我认为问题可能在于base_url路径.如果有人知道这个PLZ帮助我解决这个问题.
解决方法
我在服务中有这个功能:
saveFunction: function(obj,user,securityToken){ return $http({ method: 'POST',url: 'index.PHP/controller/saveFUnction',data: $.param({ postID: obj.id,csrfTokenName: securityToken,postName: obj.name,..... userID: user.id }),headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }); }
如果您的csrfToken在codeigniter配置中处于活动状态,则需要在表单中将其作为隐藏类型字段传递.此外,您必须在标题中设置内容类型.