我在这里使用 MVC 4 和 angularjs 实际上我想在页面加载时调用 angular js 函数
I am using MVC 4 and angularjs in this actually I want to call an angular js function on page load
我想在页面加载时调用 angularjs 函数 (DeptSpecific),并将 ID 作为硬编码参数传递。而且我正在通过 ng-init="DeptSpecific('1')"。我正在学习 angularjs 请建议我如何调用一个函数并在页面加载时将参数传递给它而无需任何点击或仅在页面加载时应该调用函数时进行任何操作。如果你在想我为什么使用 ng-init ..没有具体的原因,它可能是错误的,但它很好地调用了函数,我可以在调试器 (f12) 中看到,但是 $scope.s 我未定义,即使在那里是匹配的 ID。
$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>
查看您的代码,使用 ng-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);
});
}
}]);
现在,如果这对您有用,但您还希望能够在 .success
;
之外访问 $scope.s
你可以写一个函数,添加到.success
传递onSucess的返回值,做你想做的事情
.success(function(response) {
callAFunction(response);
}
我想在页面加载时调用 angularjs 函数 (DeptSpecific),并将 ID 作为硬编码参数传递。而且我正在通过 ng-init="DeptSpecific('1')"。我正在学习 angularjs 请建议我如何调用一个函数并在页面加载时将参数传递给它而无需任何点击或仅在页面加载时应该调用函数时进行任何操作。如果你在想我为什么使用 ng-init ..没有具体的原因,它可能是错误的,但它很好地调用了函数,我可以在调试器 (f12) 中看到,但是 $scope.s 我未定义,即使在那里是匹配的 ID。
$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>
查看您的代码,使用 ng-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);
});
}
}]);
现在,如果这对您有用,但您还希望能够在 .success
;
$scope.s
你可以写一个函数,添加到.success
传递onSucess的返回值,做你想做的事情
.success(function(response) {
callAFunction(response);
}