ngRepeat在AngularUI引导程序对话框中不起作用

Rya*_*yan 1 angularjs angular-ui

有谁知道如何使我的代码工作.我正在尝试创建用户创建对话框,并希望使用ngResource发送帖子数据,我已经配置了我的PHP后端,并且它按预期工作.现在,我的问题是在对话框上添加错误,我尝试添加虚拟数据,但ngRepeat对我不起作用.我也尝试过调试问题的不同步骤,但对我来说没什么用.我也在研究这个问题,但没有运气.这是我的代码:

<div name="errors" id="errors" class="alert alert-error">
        <li ng-repeat="error in dialog.errors">{{ error }}</li>
</div>
Run Code Online (Sandbox Code Playgroud)

试着看看链接 http://jsfiddle.net/QCQrF/

pko*_*rce 6

@Ryan你的jsFiddle中发生了很多事情,但最重要的问题是你指定对话框模板的方式.模板可以指定为字符串(使用template属性)或指定为partial(templateUrl).

如果将模板移动到部分模板,则可以如下指定:

var dialogOpts = {
        backdrop: true,
        keyboard: true,
        backdropFade: true,
        backdropClick: true,
        templateUrl:  'login-dialog.html',
        controller: 'DialogCtrl',
        resolve: { dialogScope : {
          errors : ['error1', 'error2'],
          title :'Add User',
          btnTxt : 'Create User'
        }}
    };
Run Code Online (Sandbox Code Playgroud)

此外,IMO使用resolve属性而不是使用对话框的实例更容易传递要在对话框范围上公开的数据.

我已经把你的小提琴变成了一个插件来展示这个:http://plnkr.co/edit/iGIwPBj9zBPgX3IUwBNj?p = preview

您可能会发现$ dialog的服务附加文档有助于进一步探索此服务:https://github.com/angular-ui/bootstrap/blob/master/src/dialog/README.md

作为最后一句话,我注意到你正在将$event参数传递给事件处理程序(所有调用preventDefault()它们),而这是不必要的.

  • 只是要给出相同的答案:)这里有一个注意:@Ryan,如果你需要将html模板的对话框嵌入到你调用它的同一个视图中,你可以使用`<script type ='text/ng-template' id ='login-dialog.html'> ... template </ script>`因此您将减少1个后端调用. (3认同)