引用表单值在 Angular 中的元素

Reference an element with a form value in Angular

我有一个包含许多字段集的复杂表单,我想要一个 select 元素,它将 selected 字段集移动到顶部 on-change。我是 angular 的新手,我很难 angularly 去想这个!

我有我的字段集,我正在编写我的 'switcher' 指令并在初始化时用字段集的图例填充它,并让它在控制台记录 selected 的标题元素,但我需要实际元素,以便我可以将它移到 DOM 列表的顶部。如何将 select 选项的值与另一个 html 元素相关联?或者是否有更好的方法来解决这个问题?

我的表格:

<form>
  <switcher></switcher>
  <div class="switchable" ng-include="app/controls/outline"></div>
  <div class="switchable" ng-include="app/controls/labelling"></div>
  <div class="switchable" ng-include="app/controls/formatting"></div>
  <!--... etc...-->
</form>

示例包括:

<fieldset>
  <legend>Outline</legend>
  <!--some form elements-->
</fieldset>

切换器html:

<select ng-change="changeSwitch()" ng-model="selectedMenu"></select>

切换器指令:

angular.module('myApp')
  .directive('switcher', function ($timeout) {

    return {
      templateUrl: 'app/directives/switcher/switcher.html',
      restrict: 'EA',
      replace: 'true',
      link: function (scope, element, attrs) {
        var setOptions = function() {
          $('.switchable').each(function(i, ele){
            $(element).append('<option>'+$(ele).find('legend').text()+'</option>');
          });
        }
        $timeout(setOptions, 0);

        scope.changeSwitch = function() {
          console.log(scope.selectedMenu);
        }
      }
    };
  });

这会在控制台中显示更改时的图例,但我希望它将相应的 div 移到顶部

如果您想控制字段集元素,请将它们设为切换器元素的子元素。

`<switcher>
     <fieldset switcher-option="Outline">
         <legend>Outline</legend>
         <!--some form elements-->
     </fieldset>
</switcher>` 

接下来将自定义指令添加到每个字段集,通过要求和使用它的控制器将自己记录到切换器指令。指令不应该与它们不拥有的元素一起玩,因为它更难理解变化来自哪里。 这是 link 到 plnkr,我对您的代码做了一些修改,还添加了很多注释以帮助您理解更改,因为您说您是 angular 的新手。