【问题标题】:Angularjs: ng-repeat with ng-show input control creation failureAngularjs:ng-repeat 与 ng-show 输入控件创建失败
【发布时间】:2014-08-24 13:28:57
【问题描述】:

我在 ng-show 指令中使用 ng-repeat 值时遇到问题。

我尝试了许多解决方案,"myForm.".{{value}}.".$error.required" 没有{{}},甚至下面的示例在ng-show 指令中没有{{}}

似乎放入ng-show 的值搞砸了。在命名我的输入和创建输入控制条件时,我希望能够使用来自字段的变量(由ng-repeat 生成)创建多个字段。

<form name="myForm">
   <div ng-repeat="fields in logEntry.StringValues">
       {{fields.Title}} <input type="text" name="{{fields.PropertyInfoName}}" ng-model="user" required>

       <span class="error" ng-show="myForm.fields.PropertyInfoName.$error.required">
          Required!
       </span><br>
   </div>

编辑:以下代码有效,但没有我需要的 ng-repeat。

<form name="myForm">
  SomeText Here: <input type="text" name="testName" ng-model="user" required>
    <span class="error" ng-show="myForm.testName.$error.required">
      Required!
    </span><br>
</form>

【问题讨论】:

  • 你在寻找这样的东西吗:jsfiddle.net/thomporter/ANxmv/2
  • 是的,当我在 ng-repeat 指令之外创建上述表单时,提供了相同的功能。但问题是我需要创建很多表单并根据从我的 logEntry.StringValues 返回的每个对象对所有表单进行验证,因此需要使用 ng-repeat。 (我可以让代码自己正常工作,但在 ng-repeat 内部,它会拧紧)
  • 我明白了。做了一些研究,我遇到了this question here。我相信这是一种解决方案。唯一其他易于访问的选项是构建您自己的指令。希望有帮助!
  • 这解决了我的问题!谢谢!

标签: angularjs angularjs-directive angularjs-ng-repeat ng-repeat ng-show


【解决方案1】:

记住它只是 javascript

 "myForm.".{{value}}.".$error.required"

只是

 myForm[value].$error.required

但是你需要创建指令来做你想做的事。作为以角度实现的非常相似的示例,您可以查看https://github.com/gaslight/angular-schema-form 这是演示:http://gaslight.github.io/angular-schema-form/

【讨论】:

  • 如果我错了,请纠正我,这仍然不允许我使用插值动态创建输入元素的名称?和 ng-repeat 呢?重点是能够通过 ng-repeat 指令使用插值对所述输入元素使用内置的角度验证来命名所述元素。不管解决这个问题的解决方案是在每个生成的输入元素周围使用嵌套表单。
  • @Frozire 如果您将其包装在指令中,您可以动态创建名称属性,并且指令将在编译或链接步骤中处理它。
【解决方案2】:
【解决方案3】:

尝试去掉指令中的双括号 {{}}。如果您需要更具体的帮助,请发布相应的javascript代码。

 <form name="myForm">
      <div ng-repeat="fields in logEntry.StringValues">
        {{fields.Title}} <input type="text" name="fields.PropertyInfoName" ng-model="user" required>
        <span class="error" ng-show="myForm.fields.PropertyInfoName.$error.required">
          Required!
        </span><br>
      </div>
    </form>

【讨论】:

  • 正如我所提到的,我已经尝试过这个解决方案,但它仍然不起作用。并且这个功能没有对应的 javascript 代码,它包含在 Angular 框架中。
  • 好吧,我认为您将不得不编写许多输入或将 html 写入 javascript 字符串(您可以根据需要进行操作),然后使用
  • 是的,谢谢你的建议。遗憾的是,这是不可能的,因为最终应用程序将获得具有通用值和验证的通用数量的表。所以我需要能够从 ng-repeat 中的对象创建输入字段。
猜你喜欢
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-30
相关资源
最近更新 更多