Sha*_*hay 5 jquery jquery-ui angularjs angular-ui-bootstrap
我试图在打开的模式上执行jQuery脚本,以便将其中一个字段转换为a jQuery UI Spinner.
我正在使用Angular UI中opened记录的承诺.
问题: jQuery选择器无法按预期工作,也无法检索任何内容.
所以我的控制器的一个功能看起来像这样:
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");
});
Run Code Online (Sandbox Code Playgroud)
我的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>
Run Code Online (Sandbox Code Playgroud)
这modalCtrl是无关紧要的.
提示:debugger当opened调用promise 时
我尝试放右,并发现模态尚未打开.
仅供参考,我使用的是jQuery 1.9.0,jQuery UI 1.10.4,AngularJS 1.2.16和Angular UI Bootstrap v0.11.
pko*_*rce 10
您正在从错误的角度处理问题,尝试从控制器执行低级DOM操作.这在AngularJS世界中是一个很大的禁忌,你将会遇到各种各样的麻烦.
您的UI逻辑不应该"等待"将给定的DOM节点添加到DOM树中,而应该以声明方式表达.在这种特殊情况下,它意味着您应该编写一个"滑块"指令,简单如下:
yourModule.directive('mySpinner', function() {
return {
link: function(scope, elm) {
elm.spinner({
max: 20,
min: 1
});
}
};
});
Run Code Online (Sandbox Code Playgroud)
然后在 modal的HTML中使用这个新定义的指令:
<input class="form-control spinner" type="text" my-spinner ng-model="noOfItems"/>
Run Code Online (Sandbox Code Playgroud)
这样,您就不必担心,当模式的内容被添加到DOM 和你做你帮个忙具有限定纺纱的可重复使用的方式!
回到$ modal相关的问题 - opened当所有数据都准备就绪并且即将显示模态(动画开始等)以便能够显示等待指示符或类似时,许诺就会得到解决.绝不是它被设计为知道何时将模态的内容插入到DOM树中,就像AngularJS一样,大多数时候并不需要这种知识.
| 归档时间: |
|
| 查看次数: |
5853 次 |
| 最近记录: |