Javascript 使用AngularJS导航时,jQuery UI对话框忽略ng模型

Javascript 使用AngularJS导航时,jQuery UI对话框忽略ng模型,javascript,jquery,jquery-ui,angularjs,jquery-ui-dialog,Javascript,Jquery,Jquery Ui,Angularjs,Jquery Ui Dialog,我正在使用AngularJS和Bootstrap构建一个应用程序,到目前为止,一切都进展得相当顺利。我有一个jQuery UI对话框小部件实例,我在整个站点中使用它来进行确认、更新表单等操作。更新表单通常包含ng模型属性,因此我可以在对话框出现时预加载输入。这是一个样本 HTML 这就是事情变得奇怪的地方。每当我打开然后关闭其中一个对话框,离开页面,导航回页面,并尝试使用不同的数据集打开对话框面板时,AngularJS到对话框的关系就会中断。更具体地说,面板不再识别对传入的$scope变量所做的

我正在使用AngularJS和Bootstrap构建一个应用程序,到目前为止,一切都进展得相当顺利。我有一个jQuery UI对话框小部件实例,我在整个站点中使用它来进行确认、更新表单等操作。更新表单通常包含ng模型属性,因此我可以在对话框出现时预加载输入。这是一个样本

HTML

这就是事情变得奇怪的地方。每当我打开然后关闭其中一个对话框,离开页面,导航回页面,并尝试使用不同的数据集打开对话框面板时,AngularJS到对话框的关系就会中断。更具体地说,面板不再识别对传入的$scope变量所做的任何更改。在上面的示例中,面板将仅显示上次成功加载时保留的selectedUserLogin和selectedUserName的值,而不管新值是什么。一切仍然是可编辑的,就像一个普通的HTML表单一样,但在我手动重置页面之前,角度关系将丢失

我特别了解角度导航,因为它实际上只是改变单个页面上的显示,但我不知道这如何破坏对话框小部件。我还确认,无论额外页面是否调用自己的对话框方法,导航到任何页面并返回都会中断对话框。沿着这些思路,在离开页面之前,使用不同的数据重复打开多个对话框效果良好


这件事真的难住了我,所以任何帮助或指导都将不胜感激。

您是在什么时候
$compile
-ing DOM的?您在那里使用的
范围将是绑定到HTML的范围。我怀疑您没有更新该作用域?我在控制器的开头使用$timeout进行调用(我将更新上面的代码)。这不是最有棱角的方式,但直到现在它对我来说还是很好的。使用指令可能更好,但我还没有找到一个可靠的例子来说明如何做到这一点。我也不确定这是否会改变这种特殊情况。重新编译看起来确实有帮助,但不确定如何进行。
<div id='divMyEditor'>
    <table>
        <tr>
            <td>Login:</td>
            <td><input type='text' ng-model="selectedUserLogin" /></td>
        </tr>
        <tr>
            <td>Full Name:</td>
            <td><input type='text' ng-model="selectedUserName" /></td>
        </tr>
    </table>
</div>
$timeout(function() {
    $("#divMyEditor").dialog({ 
        autoOpen: false, 
        draggable: false, 
        modal: true,
        closeOnEscape: true,
        width: 400,
        resizable: false
    });
},0);