gpt4 book ai didi

jquery - Angular UI Modal 开放式 promise 在模式显示之前已解决

转载 作者:行者123 更新时间:2023-12-03 22:59:29 25 4
gpt4 key购买 nike

我正在尝试在打开的模式上执行 jQuery 脚本,以便将其中一个字段转换为 jQuery UI Spinner

我正在使用Angular UI中记录的opened promise 。

问题:jQuery 选择器未按预期工作并且未检索任何内容。

所以我的 Controller 的功能之一如下所示:

var modalInstance = $modal.open({
templateUrl: 'modalDialog.html',
controller: modalCtrl,
resolve: {
noOfItems: function(){
return $scope.noOfItems;
}
}
});

modalInstance.opened
.then(function () {
$(".spinner").spinner({
max: 20,
min: 1
});
});

modalInstance.result
.then(function () {
console.log("modal closed");
});

还有我的 HTML:

<script type="text/ng-template" id="modalDialog.html">
<div class="modal-header">
<h4 class="modal-title">My Modal</h4>
</div>
<div class="modal-body">
<input class="form-control spinner" type="text" ng-model="noOfItems" />
</div>
<div class="modal-footer">
<button class="btn btn-default" ng-click="cancel()">Cancel</button>
<button class="btn btn-primary" ng-click="save()">Save</button>
</div>
</script>

modalCtrl 无关紧要。

提示:我尝试在调用 opened Promise 时放置一个调试器,但发现模式尚未打开。

仅供引用,我正在使用 jQuery 1.9.0、jQuery UI 1.10.4、AngularJS 1.2.16 和 Angular UI Bootstrap v0.11。

最佳答案

您从错误的 Angular 处理问题,试图从 Controller 进行低级 DOM 操作。这在 AngularJS 世界中是一个大禁忌,你会在以后陷入各种各样的麻烦。

您的 UI 逻辑不应该“等待”给定 DOM 节点添加到 DOM 树,而应该以声明方式表达。在这种特殊情况下,这意味着您应该编写一个“ slider ”指令,简单如下:

yourModule.directive('mySpinner', function() {
return {
link: function(scope, elm) {
elm.spinner({
max: 20,
min: 1
});
}
};
});

然后在模态 HTML 中使用这个新定义的指令:

<input class="form-control spinner" type="text" my-spinner ng-model="noOfItems"/>

这样,当模态的内容添加到 DOM 时,您就不必担心并且您已经为自己提供了一种定义微调器的可重用方式!

回到$modal相关的问题 - 当所有数据准备好并且模态即将显示(动画开始等)以便能够显示等待时,opened promise 得到解决指标或类似指标。它绝不是为了知道 modal 的内容何时插入 DOM 树而设计的,就像 AngularJS 一样,大多数时候并不真正需要这种知识。

关于jquery - Angular UI Modal 开放式 promise 在模式显示之前已解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23576254/

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