0

Я хочу вызвать функцию угловой функции (DeptSpecific) на загрузку страницы и передать идентификатор в качестве жесткого кода параметра. И что я прохожу через ng-init = "DeptSpecific ('1')". Я изучаю angularjs, пожалуйста, предложите мне, как вызвать функцию и передать ей параметр на загрузку страницы без какого-либо щелчка или чего-либо, только когда на страницу загружается функция. Если вы думаете, почему я использовал ng-init .. нет никакой конкретной причины для этого, это может быть неправильно, но он вызывает функцию хорошо, я вижу, что в отладчике (f12), но $ scope.si не определено, хотя есть сопоставленный Я БЫ.Я использую MVC 4 и angularjs в этом, на самом деле, я хочу вызвать угловую функцию js на загрузке страницы.

$scope.DeptSpecific = function (ID) { 

    var BelongsToThisDepartment = []; 
    $http.get('/Department/getDept').success(function (response) { 
     $scope.departments = $scope.$eval(response); 
    }); 
    angular.forEach($scope.departments, function (item1) { 
     if (item1.ID == ID) { 
      BelongsToThisDepartment.push(item1); 
     } 
    }) 

    $scope.s = $scope.$eval(angular.toJson(BelongsToThisDepartment)); 

    // console.log(JSON.stringify($scope.s)); 

} 




<div ng-app="MyApp"> 
    <div ng-controller="MyController"> 
     <table class="tableData" border="0" cellspacing="0" cellpadding="0" ng-init="DeptSpecific('1')"> 
      <thead> 
      <tr> 
       <th></th> 
       <th>ID</th> 
       <th>NAME</th> 
       <th>LOCATION</th> 
      </tr> 
      </thead> 
      <tbody ng-repeat="O in s"> 
       <tr ng-class-even="'even'" ng-class-odd="'odd'"> 
       <td class="CX" ng-click="student(O.ID)"><span>+</span></td> 
        <td>{{O.ID}}</td> 
        <td>{{O.Name}}</td> 
        <td>{{O.Location}}</td> 
       </tr> 
+0

где код для MyController? он швы, что вы не вводите $ scope в MyController .. – Merlin

+0

Нет ... я добавил, что я не смог скопировать свой полный код в этом сообщении. –

+0

не могли бы вы добавить код контроллера, пожалуйста, – Merlin

ответ

0

Глядя на ваш код, используя нг-Init это хорошо, но ваш $scope.departments не могут быть доступны за пределами метода .success.

angular.module('MyApp') 
.controller('MyController', ['$scope', function($scope) { 
    $scope.DeptSpecific = function (ID) { 
     var BelongsToThisDepartment = []; 
     $http.get('/Department/getDept') 
     .success(function (response) { 
      $scope.departments = $scope.$eval(response); 

      angular.forEach($scope.departments, function (item1) { 
      if (item1.ID == ID) { 
       BelongsToThisDepartment.push(item1); 
      } 
      }) 
      $scope.s = $scope.$eval(angular.toJson(BelongsToThisDepartment)); 
      console.log($scope.s); 
     }); 
    } 
}]); 

теперь, если это работает для вас, но вы также хотите, чтобы иметь возможность получить доступ к $scope.s вне этой .success;

Вы можете написать функцию, добавить ее в .success передать значение возвращено onSucess и сделать то, что вы хотите сделать.

.success(function(response) { 
    callAFunction(response); 
}  
Смежные вопросы