只有在选择框中选择“其他”时,从文本字段显示和获取输入的最佳方式是什么?

时间:2015-06-29 08:19:31

标签: javascript jquery ruby-on-rails ruby angularjs

我正在使用Ruby on Rails和AngularJS,目前我正在使用Angular根据选择显示文本字段。但是,我在保存价值方面遇到了麻烦。

我的html.haml:

%div{ "ng-app" => "formApp" }
  = simple_form_for(@app) do |f|
    .form-group{ "ng-controller" => "TypeCtrl", "ng-init" => "init('#{@type}')" }
      = f.label :type, "Type"
      = f.select :type, type_selection, {  }, { required: true, class: "form-control", "ng-model" => "type_select" }
      = f.text_field :type, class: "form-control", "ng-show" => "type_select=='others'"

我的js.erb:

$("document").ready(function() {
  formApp = angular.module('formApp', []);
  formApp.controller('TypeCtrl', ['$scope', function($scope) {
    $scope.init = function(type) {
      $scope.type_select = type;
    }
  }]);
});
@type中使用的

ng-init在我的控制器中定义。目前,我已经在init上正确显示了下拉列表,并按预期显示了文本字段。但是,它始终将type字段保存为输入的内容,而不是查看下拉列表(可能是因为type都有2个输入字段)。用RoR和AngularJS解决这个问题的传统方法是什么?

1 个答案:

答案 0 :(得分:1)

您不应该有多个具有相同名称的输入。它将分配最后一个。考虑将一个改为例如editref.edit(sel, null, function (node, status) { console.log(node.text); // the new node title }) 的另一个然后在控制器端单独处理它们。

type_select示例:

type_input