2017-07-31 48 views
0

在加載頁面期間,此代碼的某些問題filltable()函數未觸發。 我已經完成了web服務的後端。如何在頁面加載時執行角度函數?


 
    var app = angular.module("myApp", []); 
 
    app.controller("myCntrl", function ($scope, $http) { 
 
     $scope.fillTable(); 
 
     $scope.fillTable = function() { 
 
      $scope.Name= ""; 
 
      var httpreq = { 
 
       method: 'POST', 
 
       url: 'http://localhost:61292/PPAPI.asmx/GetTables', 
 
       headers: { 
 
        'Content-Type': 'application/json; charset=utf-8', 
 
        'dataType': 'json' 
 
       }, 
 
       data: {} 
 
      } 
 
      $http(httpreq).success(function (response) { 
 
       $scope.TableList= response.d; 
 
      }) 
 
     }; 
 
     $scope.fillTable(); 
 
    }); 
 
</script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.11/angular.min.js"></script>

+0

在html你包括NG-控制器? –

+0

是的,我喜歡。

+0

您在什麼基礎上確定填表未執行?它實際上應該根據您發佈的代碼運行兩次。 –

回答

-1

由於您使用的角1.2版,使用ngInit函數來執行你的intialiation代碼。在版本1.6中,只需在控制器內創建一個函數調用$ onInit()即可。

<myControl ng-init="fillTable()"></myControl> 
+0

ng-init僅作爲最後的手段使用。 –

+0

@MikeFeltman事實上,使用控制器代替'ng-init'似乎更好, – Zooly

0

LT56答案有效,但不推薦使用ng-init初始化數據。

AngularJS Documentation

這個指令可以被濫用,以邏輯的不必要的量添加到您的模板。 ngInit只有少數適​​當的用法,例如用於重寫ngRepeat的特殊屬性,如下面的演示所示;並通過服務器端腳本注入數據。除了這幾種情況之外,您應該使用控制器而不是ngInit來初始化作用域上的值。

我建議你使用一個init函數,你會在你的JS文件的結尾調用你已經做的。

關於你的問題,它應該工作。請檢查您的控制檯開發者是否顯示任何錯誤。您可能忘記包含您的.js文件。

0

它工作正常基於您的代碼。我在下面的代碼中修復了一些錯別字。

var myApp = angular.module('myApp',[]); 
 

 
myApp.controller('MyCtrl', function($scope) { 
 
     $scope.fillTable = function() { 
 
      console.log("call"); 
 
     }; 
 
     $scope.fillTable(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="MyCtrl"> 
 
</div>

相關問題