我有一个在$http.get
之后返回的对象。我尝试使用此对象在clientdetails.html
模板页面中显示。
var app = angular.module('openlegacy', ['ngRoute']);
app.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl : 'pages/main.html',
controller : 'clientCtrl'
})
.when('/new', {
templateUrl : 'pages/clientform.html',
controller : 'postController'
})
.when('/client/:clientid', {
templateUrl : 'pages/clientdetails.html',
controller : 'clientCtrl'
})
});
app.controller('clientCtrl', function($scope, $http, $location) {
$scope.oneclient = {};
$scope.getClient = function(clientid) {
$http({
method : 'GET',
url : '/openlegacy/web/client/' + clientid,
headers : {'Content-Type': 'application/json'}
})
.then(function(response) {
$scope.oneclient = response.data;
// console.log($scope.oneclient);
$location.path('/client/' + clientid);
});
};
这里console.log完全按照我想要的方式显示JSON响应对象。
在clientdetails.html
我<div class="container" ng-controller="clientCtrl">
<h1>{{oneclient.name}}</h1>
{。}}。
我总是收到oneclient
未定义的错误。
为什么该对象未定义?
当我使用clientlist.html
获取所有客户的列表时,同样的方法在$http.get
中完美运行。
答案 0 :(得分:0)
没有你习惯的路线很难分辨。但是,使用$ location.path()更改路径后,bass的范围可能会有所不同。
答案 1 :(得分:0)
您需要在实例化控制器时运行该方法。要运行控制器的方法onload,您可以使用NgInit
ng-init="yourfunction()"
(阅读主要问题的评论以获取更多信息)
请注意NgInit可以在范围中添加一些不必要的逻辑。 在实例化控制器时调用方法的更简洁方法是从控制器内部调用方法:
$scope.yourfunction();