gpt4 book ai didi

javascript - 使用 Angularjs 中的指令创建 ajax 加载微调器

转载 作者:搜寻专家 更新时间:2023-11-01 04:37:10 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的加载程序。以下是我到目前为止所做的。有人可以看一下,让我知道我哪里出错了吗?

似乎未添加 CSS 样式 loading style-2。我的 DOM 只显示:

<span class=""></span>

我的指令:

angular.module('loaderModule', [
'restangular',
])

.controller('appLoaderController', ['$scope', function ($scope) {
$scope.$on('LOAD', function () {
$scope.loading = "loading style-2"
});
$scope.$on('UNLOAD', function () {
$scope.loading = ""
});
}])

.directive('spinLoader', function() {
return {
restrict: 'E',
transclude: true,
template: '<span class="{{ loading }}"></span><div ng-transclude ></div>'
};
});

HTML:

<spin-loader>
<div ui-view></div>
</spin-loader>

然后我通过调用来使用它:$scope.$emit('LOAD')

最佳答案

我会像这样在你的指令中使用 ng-class:

    app.directive('spinLoader', function() {
return {
restrict: 'E',
transclude: true,
template: '<div ng-class="{loading: isLoading, style2: isLoading}" ng-transclude></div>'
};
});

然后在您的 Controller 中,您可以将 $scope.isLoading 设置为 true 或 false。

app.controller('Ctrl', function ($scope) {

var dummyLoadingVariable = false;

$scope.$on('LOAD', function () {
$scope.isLoading = true;
});
$scope.$on('UNLOAD', function () {
$scope.isLoading = false;
});

$scope.toggleLoading = function(){
dummyLoadingVariable = !dummyLoadingVariable;

if(dummyLoadingVariable){
$scope.$emit('LOAD');
} else {
$scope.$emit('UNLOAD')
}
}

});

以及用于测试它的 HTML:

isLoading: {{ isLoading }}
<br/>
<spin-loader>
<div ui-view>Transcluded</div>
</spin-loader>

<br/>
<button ng-click="toggleLoading()">toggleLoading()</button>

这是一个正在运行的 Plunk:http://plnkr.co/edit/SetecF03aY6TnQilryWt?p=preview

关于javascript - 使用 Angularjs 中的指令创建 ajax 加载微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20740213/

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