如何在angularjs表达式中以数组格式访问html元素名称?

时间:2015-02-27 10:01:59

标签: ruby-on-rails angularjs html5 devise

我在rails设备上使用ruby进行身份验证。我需要在客户端验证登录表单。 Devise使用用户[email]作为名称属性值。如何在angularjs ng-show表达式中使用相同的名称?

<form ng-app="" ng-controller="validateCtrl" name="myForm" novalidate>
    <input type="text" name="user[email]" ng-model="user" required>
    <span ng-show="myForm.user[email].$error.required">Username is required</span>
</form>

用户[email]在angularjs ng-show表达式中不起作用。

2 个答案:

答案 0 :(得分:0)

Angular无法访问rails变量上的ruby。

答案 1 :(得分:0)

你可以这样做,这是我使用devise gem和angular 1.3.14

的例子
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: {name: "profileForm", novalidate: false}) do |f| %>

<div class="field">
    <%= f.label :firstname %><br />
    <%= f.text_field :firstname, autofocus: true, "ng-model"=>"profile.firstname", required: true %>


    <div ng-messages="profileForm['user[firstname]'].$error" class="errors">
      <span ng-message="required">Required!</span>
    </div>
  </div>

<% end %>

注意:您需要在应用中添加angular-messages.js和模块

<!DOCTYPE html>
<html ng-app="myApp">

<head>
  <script data-require="angular.js@1.3.14" data-semver="1.3.14" src="https://code.angularjs.org/1.3.14/angular.js"></script>
  <script data-require="angular.js@1.3.14" data-semver="1.3.14" src="https://code.angularjs.org/1.3.14/angular-messages.js"></script>
  .....
在您的app.js

(function() {

  var app = angular.module("myApp", ["ngMessages"]);

}());