AngularJS:在视图加载上定义变量

时间:2014-02-22 23:58:46

标签: javascript angularjs

我的控制器有以下代码:

app.controller("consoleCtrl", function($scope,$http,loginFactory){
$scope.emp = [];    

//Load logged in employee data:
loginFactory.bootConsole().success(function(data){
    console.log("Data retrieved from servlet: " + data);
    $scope.emp = data;
});

console.log("Data stored in variable: " + $scope.emp);
}

和我工厂的这个功能:

bootConsole: function(){
        return $http.post("http://localhost:8080/EmployeeAngular/Console");
    }

当我在工厂中运行bootconsole函数时,数据会被正确检索,但它不会将其加载到变量$ scope.emp中。有没有办法在视图渲染上加载一个函数?我尝试使用ng-init,但这没有帮助。

观点:

<body ng-controller="consoleCtrl">
....
<div id="proPic">{{personal.img}}</div>
                    <div id="name">{{personal.fname}} {{personal.lname}}</div>
                    <div id="add1">{{personal.street}}</div>
                    <div id="add2">{{personal.city}}, {{personal.state}} {{personal.zip}}</div>
                    <div id="email">{{personal.email}}</div>
                    <div id="role">{{personal.role}}</div>

1 个答案:

答案 0 :(得分:0)

您的视图也没有引用emp中的任何$scope属性,但我认为阻止您的是您异步获取数据,因此即使您将其视图也未更新在$scope.emp

解决这个问题的一个简单方法是在回调中应用范围,以便更新视图:

//Load logged in employee data:
loginFactory.bootConsole().success(function(data) {
  console.log("Data retrieved from servlet: " + data);
  // Run an angular digest cycle to properly update the view
  $scope.$apply(function() {
    $scope.emp = data;
    console.log("Data stored in variable: " + $scope.emp);
  });
});