AngularJS动态添加带有子元素和模型的新div

小工具

我在http://jsfiddle.net/skwidgets/gnvVY/13/上设置了jsfiddle

基本上有一个div,其中包含一些表单元素,包括两个下拉菜单,一个单选按钮组和一个用于删除该行的链接。

<div ng-app="myapp">
<div id="w" ng-controller="survey">
    <div class="qs">
        <div class="">1</div>
        <div class="">
            <select data-role="none" name="w1.selected_location" data-ng-model="w.w1.selected_location" ng-options="location.value as location.label for location in locations">
                <option value="">Choose a Location</option>
            </select>
        </div>
        <div class="">
            <select data-role="none" name="selected_stage" data-ng-model="w.w1.selected_stage" ng-options="stage.value as stage.label for stage in stages">
                <option value="">Choose a Stage</option>
            </select>
        </div>
        <div class="">
            <input data-role="none" type="radio" name="wI4" value="true" data-ng-model="w.w1.wIn24">
        </div>
        <div class="">
            <input data-role="none" type="radio" name="wI4" value="false" data-ng-model="w.w1.wIn24">
        </div> <a href="#">Remove</a>

    </div>
    <div>
        <button data-role="none">Add Row/button>{{w | json}}</div>
</div>
</div>
<script>
    var locations = [{
    label: 'Head',
    value: 9,

}, {
    label: 'Shoulders',
    value: 5,
}
// ... more would go here
];

var stages = [{
    label: 'I',
    value: 0
}, {
    label: 'II',
    value: 1
}];
</script>

它们包装在带有“ qs”类的div中。所有选择都填充到名为“ w1”的模型中。有一个按钮可以添加另一行这些表单元素,并且如果用户要添加另一个,则可以将父容器添加到dom中,但是它必须具有类似的不同模型名称到(w1)的第一个,但型号名称中的数字递增(w2,w3等),行号也递增。

我试图制定一个指令来处理该行为,但没有任何运气。

任何想法将不胜感激。

尼科斯·帕拉斯科沃波洛斯

在Angular(通常是MVVM框架)中完成此操作的方法是控制模型。该模型是自然物体的阵列,具有性的判定的每个对象selected_locationselected_stagewIn24因此,从此开始(按照您的命名,可以对其进行改进):

function Model() {
    this.selected_location = null;
    this.selected_stage = null;
    this.wIn24 = null;
}

$scope.w = {
    w: [ new Model() ]
};

现在,将重复的部分放在中ng-repeat

<div ng-repeat="ww in w.w">

并相应地调整ng-model,例如:

<select data-role="none" data-ng-model="ww.selected_location"
    ng-options="location.value as location.label for location in locations">
    <option value="">Choose a Location</option>
</select>

每当需要名称且名称唯一时{{ $index }},如果没有可用的ID,请使用:

<input data-role="none" type="radio" name="wI4_{{$index}}" value="true"
    data-ng-model="ww.wIn24" />

最后将add()andremove()函数放在范围内:

$scope.add = function() {
    $scope.w.w.push(new Model());
};

$scope.remove = function(ww) {
    var index = $scope.w.w.indexOf(ww);
    if( index >= 0 ) $scope.w.w.splice(index,1);
};

并将它们绑定到模板:

<a ng-click="remove(ww)">Remove</a>

<button data-role="none" ng-click="add()">Add Wound</button>

该小提琴具有完整的解决方案:http : //jsfiddle.net/x9NjJ/


编辑:上面的小提琴消失了,包括完整的重建来源:

HTML:

<div ng-app="app" ng-controller="survey">
    <div ng-repeat="ww in w.w">
        <select data-role="none" data-ng-model="ww.selected_location"
            ng-options="location.value as location.label for location in locations">
            <option value="">Choose a Location</option>
        </select>
        <select data-role="none" data-ng-model="ww.selected_stage"
            ng-options="stage.value as stage.label for stage in stages">
            <option value="">Choose a Stage</option>
        </select>
        In 24: <input data-role="none" type="radio" name="wI4_{{$index}}" value="true" data-ng-model="ww.wIn24" />Yes
        <input data-role="none" type="radio" name="wI4_{{$index}}" value="false" data-ng-model="ww.wIn24" />No
        <a href="#" ng-click="remove(ww, $event)" style="display:inline-block; margin-left: 20px;">Remove</a>
    </div>
    <button data-role="none" ng-click="add()">Add Wound</button>
</div>

Javascript:

var app = angular.module('app', []);

function Model() {
    this.selected_location = null;
    this.selected_stage = null;
    this.wIn24 = null;
}

app.controller('survey', function($scope) {
    $scope.w = {
        w: [ new Model() ]
    };

    $scope.add = function() {
        $scope.w.w.push(new Model());
    };

    $scope.remove = function(ww, $event) {
        $event.preventDefault();
        var index = $scope.w.w.indexOf(ww);
        if( index >= 0 ) $scope.w.w.splice(index,1);
    };

    $scope.locations = [
        {
            label: 'Head',
            value: 9,

        },
        {
            label: 'Shoulders',
            value: 5,
        }
        // ... more would go here
    ];

    $scope.stages = [
        {
            label: 'I',
            value: 0
        },
        {
            label: 'II',
            value: 1
        }
    ];
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用JavaScript添加带有动态元素问题的HTML div

来自分类Dev

AngularJS 显示带有子元素的 div

来自分类Dev

如何使用Angular动态添加带有控制器的div标签?

来自分类Dev

在文件顶部添加带有php simplexml的新子节点

来自分类Dev

从Arraylist中删除重复数据(模型名称和价格),并在Android中添加带有Price(添加)的模型

来自分类Dev

PHP SimpleXMLElement:如何添加带有“&”号的动态子代

来自分类Dev

Groovy动态添加带有参数的方法

来自分类Dev

在WPF中动态添加带有资源填充的矩形

来自分类Dev

动态添加带有控件的网格行定义

来自分类Dev

动态添加带有剪切路径的SVG

来自分类Dev

添加带有背景图像、标题和类别的 div 链接

来自分类Dev

如何添加带有预测的新列?

来自分类Dev

Python添加带有标题的新列

来自分类Dev

添加带有 HTML 气泡信息的新行

来自分类Dev

以编程方式添加带有文本和图像的LinearLayout

来自分类Dev

添加带有外键和引用的列

来自分类Dev

如何附加带有图像的模型?

来自分类Dev

如何附加带有图像的模型?

来自分类Dev

是否可以在div(带有id)中动态修改子元素(没有id)的样式?

来自分类Dev

在Android中添加带有和不带有资源的库

来自分类Dev

如何使用`renderMenu`在发光的(shinydashboard)中动态添加带有动作按钮的其他`sidebarMenu`?

来自分类Dev

jQuery Select2动态添加带有变量定义“ val”的项目

来自分类Dev

JqWidget选项卡-动态添加带有Ajax内容的选项卡

来自分类Dev

qt如何添加带有按钮的包含动态小部件的组框?

来自分类Dev

Primefaces 6 问题动态添加带有动作的菜单项

来自分类Dev

如何使用有效的ng-click函数添加带有angularjs的html按钮

来自分类Dev

添加带有祖先的收藏组

来自分类Dev

自动添加带有专辑的歌曲

来自分类Dev

添加带有单击事件的行

Related 相关文章

  1. 1

    使用JavaScript添加带有动态元素问题的HTML div

  2. 2

    AngularJS 显示带有子元素的 div

  3. 3

    如何使用Angular动态添加带有控制器的div标签?

  4. 4

    在文件顶部添加带有php simplexml的新子节点

  5. 5

    从Arraylist中删除重复数据(模型名称和价格),并在Android中添加带有Price(添加)的模型

  6. 6

    PHP SimpleXMLElement:如何添加带有“&”号的动态子代

  7. 7

    Groovy动态添加带有参数的方法

  8. 8

    在WPF中动态添加带有资源填充的矩形

  9. 9

    动态添加带有控件的网格行定义

  10. 10

    动态添加带有剪切路径的SVG

  11. 11

    添加带有背景图像、标题和类别的 div 链接

  12. 12

    如何添加带有预测的新列?

  13. 13

    Python添加带有标题的新列

  14. 14

    添加带有 HTML 气泡信息的新行

  15. 15

    以编程方式添加带有文本和图像的LinearLayout

  16. 16

    添加带有外键和引用的列

  17. 17

    如何附加带有图像的模型?

  18. 18

    如何附加带有图像的模型?

  19. 19

    是否可以在div(带有id)中动态修改子元素(没有id)的样式?

  20. 20

    在Android中添加带有和不带有资源的库

  21. 21

    如何使用`renderMenu`在发光的(shinydashboard)中动态添加带有动作按钮的其他`sidebarMenu`?

  22. 22

    jQuery Select2动态添加带有变量定义“ val”的项目

  23. 23

    JqWidget选项卡-动态添加带有Ajax内容的选项卡

  24. 24

    qt如何添加带有按钮的包含动态小部件的组框?

  25. 25

    Primefaces 6 问题动态添加带有动作的菜单项

  26. 26

    如何使用有效的ng-click函数添加带有angularjs的html按钮

  27. 27

    添加带有祖先的收藏组

  28. 28

    自动添加带有专辑的歌曲

  29. 29

    添加带有单击事件的行

热门标签

归档