【发布时间】:2013-12-02 09:35:17
【问题描述】:
我使用 AngularJS 作为构建 Web 应用程序的框架。 DI 非常适合单元测试,并且 AnguarJS 也有一个最佳实践,即控制器中没有 DOM UI 相关代码。我也在使用 jQuery UI 来构建 UI。然后我有一个问题:
例如我正在使用 jQuery UI 对话框 http://jqueryui.com/dialog/#modal-confirmation,所以在 HTML 中我有声明对话框的代码:
<div id="dialog-confirm" title="Empty the recycle bin?">
<p>These items will be permanently deleted and cannot be recovered. Are you sure?</p>
</div>
然后我有一个按钮,点击它会弹出对话框
<a ng-click="showDialog()>Click me</a>
然后在控制器中我有代码
$scope.showDialog = function() {
$('#dialog-confirm').dialog( //DOM UI code in controller!
//...
});
}
这是遵循 jQuery UI 演示代码的基本工作流程:http://jqueryui.com/dialog/#modal-confirmation,我只是将它与 AngularJS 结合起来。它可以工作,但我认为我的代码存在一个大问题:我在控制器中混合了 DOM UI 代码和逻辑,因此它破坏了控制器的可测试性。
在不破坏 DI 原则和可测试性的情况下,如何将 jQueryUI 与 AngularJS 一起使用?
【问题讨论】:
标签: javascript jquery jquery-ui angularjs