gpt4 book ai didi

javascript - 如何使用 AngularJS 加载函数信息并将其保存在路由中的解析范围内

转载 作者:行者123 更新时间:2023-12-03 09:48:23 25 4
gpt4 key购买 nike

如何使用 AngularJS 加载函数信息并将其保存在路由中的解析范围内?

例如:

.state('list.employee_list', {
url: "/employee_list",
templateUrl: "views/list/employee_list.html",
data: { pageTitle: 'Employee list' },
resolve: {
"employeesCollection" : function(){
alert("LOAD");
$scope.myData = myFunction($scope);
alert("finished load, now load view");
}
}
})

这个想法是在加载 View 之前加载表的信息,因此表不会为空。该函数从 Parse.com 获取数据

编辑:

config.js

.state('list.employee_list', {
url: "/employee_list",
templateUrl: "views/list/employee_list.html",
data: { pageTitle: 'Employee list' },
controller: employeeListCtrl,
resolve: {
employeesCollection : employeeListCtrl.loadData(companyID)
}
})

Controller .js

function employeeListCtrl($scope, employeesCollection){
$scope.employeesCollection = employeesCollection;
}

employeeListCtrl.loadData = function(companyID){
var employeesCollection = [];
var User = Parse.Object.extend("User");
var promise = new Parse.Promise();
var query = new Parse.Query(User);
query.equalTo("companyID", companyID);
query.find().then(function(results) {
for (var i = 0; i < results.length; i++) {
var estado = results[i].get("sendTest");
if(estado == "no"){
results[i].status = "{{ 'FREE' | translate }}";
}else if(estado == "yes"){
results[i].status = "{{ 'TEST_SENT' | translate }}";
}
console.log(results[i].get("lastName"));
employeesCollection[i] = results[i];
}
}).then(function(redirect) {
// Everything is done!
//window.location.href = "#/list/employee_list";
promise.resolve();
console.log("LOADED");
return employeesCollection;
});
}

views/list/employee_list.html

<tr ng-repeat="row in employeesCollection">
<td>
{{row.get("firstName")}}
</td>
<td>
{{row.get("lastName")}}
</td>
<span class="label label-primary">{{status}}</span>
</td>

</tr>

最佳答案

以下是实现它的方法:

首先,创建一个服务来获取您的数据。假设您有一个名为 MyData 的简单服务:

app.factory('MyData', ['$http', function ($http) {

var obj = {};

obj.get = function (myendpoint) {
return $http.get('https://some/endpoint/to/get/data/'+myendpoint).then(function (results) {
return results.data;
});
};

return obj;
}]);

现在您可以将该服务传递给 $routeProvider 中的解析函数:

.when('/events', {
templateUrl: 'views/events.html',
controller: 'EventsCtrl',
resolve: {
preloaded: function(MyData) {
return MyData.get('allevents');
}
}
})

并且,在您的 Controller 中,您可以传递解析对象来访问您的数据:

app.controller('EventsCtrl', ['$scope', 'preloaded', function ($scope, preloaded) {

$scope.allevents = preloaded;

}]);

关于javascript - 如何使用 AngularJS 加载函数信息并将其保存在路由中的解析范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30949503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com