Angularjs 如何从数据库中添加新的指令信息?
我有一个有趣的情况,我完全承认我可能没有正确处理 我想使用AngularAMD将指令加载到Angular应用程序中,但有关指令的信息来自数据库/API调用。我现在是这样处理的:Angularjs 如何从数据库中添加新的指令信息?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个有趣的情况,我完全承认我可能没有正确处理 我想使用AngularAMD将指令加载到Angular应用程序中,但有关指令的信息来自数据库/API调用。我现在是这样处理的: app.run(function ($rootScope, $state, $http) { $rootScope.$state = $state; $rootScope.rootPages = JSON.parse(localStorage.pages); $http.get('api/Dir
app.run(function ($rootScope, $state, $http) {
$rootScope.$state = $state;
$rootScope.rootPages = JSON.parse(localStorage.pages);
$http.get('api/Directives').then(function (resp) {
for (var i = 0; i < resp.data.length; i++) {
var dirInfo = resp.data[i];
var dirConfig = JSON.parse(dirInfo.Configuration);
angularAMD.directive(dirInfo.Name, function () {
return {
restrict: 'E',
controller: eval(dirConfig.controller),
templateUrl: dirConfig.templateUrl,
scope: true,
}
});
}
}, function (error) {
alert('error');
});
});
在这种情况下,只显示directiveTwo.html,并且只触发controllerTwo
任何帮助都将不胜感激。将for循环用于延迟/异步操作不是常见问题。 在第一个
angularAMD.directive
被解析时,var dirInfo=resp.data[i]循环内部的代码>等于列表中的最后一项
您需要在循环中使用Promissions或anonymous函数来保持指向异步函数中正确索引的链接。请在此处查看您的案例中发生的简单示例:
for(i=0;i
将for循环用于延迟/异步操作不是常见的问题。
当第一个angularAMD.directive
被解析时,var dirInfo=resp.data[i];
循环内部等于列表中的最后一项
您需要在循环中使用Promissions或anonymous函数来保持指向async函数中正确索引的链接。请在此处查看发生在您的案例中的简单示例:
for(i=0;i
所以基本上我把循环的内部包装成了一个承诺,现在它正是我需要它去做的。非常感谢!所以基本上我把循环的内部包装成了一个承诺,现在它正是我需要它去做的。非常感谢!
dirInfo1: {
Name: directiveOne,
templateUrl: /html/directiveOne.html,
controller: controllerOne
}
dirInfo2: {
Name: directiveTwo,
templateUrl: /html/directiveTwo.html,
controller: controllerTwo
}
for ( i = 0; i < items.length; i++) {
(function(thisItem) {
setTimeout(function() {
console.log(thisItem);
}, i * 1000);
)(items[i]);
}