使用Angular指令从数组生成html

爱尔兰人

我正在尝试使用Angular指令创建一个表单,用户可以在其中指定孩子的数量,并为每个孩子显示一个编辑框,以允许输入孩子的出生日期。

这是我的HTML:

<div ng-app>
  <div ng-controller="KidCtrl">
    <form>
    How many children:<input ng-model="numChildren" ng-change="onChange()"/><br/>
    <ul>
        <li ng-repeat="child in children">
            <child-dob></child-dob>
        </li>
      </ul>
    </form>
  </div>
</div>

这是JS:

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

function KidCtrl($scope) {
  $scope.numChildren = 2
  $scope.children = [{dob: "1/1/90"}, {dob: "1/1/95"}];
  $scope.onChange = function () {
    $scope.children.length = $scope.numChildren;
  }
}

app.directive('childDob', function() {
    return {
      restrict: 'E',
      template: 'Child {{$index+1}} - date of birth: <input ng-model="child.dob" required/>'
    };
  });

这是一个jsFiddle

问题在于它只是无法正常工作。如果我在numChildren字段中输入1,则它会为list元素显示1个项目符号,但不会显示任何HTML。如果我在numChildren字段中输入2,则不会显示任何列表元素。

谁能解释我在做什么错?

非常感谢 ...

PSL

您的主要问题是该指令childDOB从不呈现。即使您的控制器可以正常工作,因为Angle的1.2.x版本已启用全局控制器。它将在全局范围内查找任何公共构造函数以匹配ng-controller指令中的控制器名称。指令不会发生这种情况。因此,缺少ng-app="appname"指令将无法呈现。因此,添加应用名称,ng-app="myApp"然后查看它是否正常运行。最好不要污染全局范围并向controller()构造函数正确注册控制器(无论如何,从1.3.x开始不建议使用全局查找,只能在全局级别关闭。)

您还需要添加track byng-repeat,这是由于基于文本框值增加数组的长度而可能导致的转发器。这可能导致多个数组值未定义,从而导致重复。所以:-

 ng-repeat="child in children track by $index"

小提琴

HTML

<div ng-app="myApp">
    <div ng-controller="KidCtrl">
        <form>How many children:
            <input ng-model="numChildren" ng-change="onChange()" />
            <br/>
            <ul>
                <li ng-repeat="child in children track by $index">{{$index}}
                    <child-dob></child-dob>
                </li>
            </ul>
        </form>
    </div>
</div>

脚本

(function () {

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

    app.controller('KidCtrl', KidCtrl);

    KidCtrl.$inject = ['$scope'];
    function KidCtrl($scope) {
        $scope.numChildren = 2
        $scope.children = [{
            dob: "1/1/1990"
        }, {
            dob: "1/1/1995"
        }];
        $scope.onChange = function () {
            $scope.children.length = $scope.numChildren;
        }
    }

    app.directive('childDob', function () {
        return {
            restrict: 'E',
            template: 'Child {{$index+1}} - date of birth: <input ng-model="child.dob" required/>'
        }
    });
})();

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Angular指令从数组生成html

来自分类Dev

使用angular js指令打印数组

来自分类Dev

指令不生成html

来自分类Dev

在指令中生成HTML时,Angular setValidity不起作用

来自分类Dev

通过Angular指令迭代html模板中的配置数组?

来自分类Dev

在Angular中将Output指令与数组一起使用

来自分类Dev

Angular HTML指令执行

来自分类Dev

使用 JavaScript 数组生成 html <table> 内容

来自分类Dev

使用 Angular ng-if 指令关闭 HTML 标签

来自分类Dev

使用angular的DropDown指令

来自分类Dev

使用Angular Custom指令

来自分类Dev

Angular.js和SVG生成指令

来自分类Dev

Angular JS:使用过滤器/指令修改生成的输出

来自分类Dev

使用带有完全动态列(字段)和行(数据)的angular指令生成表

来自分类Dev

如何在生成的d3 html中使用angularjs指令?

来自分类Dev

如何使用ng-repeat生成自定义html标签或指令?

来自分类Dev

如何使用AngularJS的ngRepeat指令从嵌套的JSON对象动态生成HTML表?

来自分类Dev

从多维数组生成HTML

来自分类Dev

用数组生成HTML

来自分类Dev

从多维数组生成HTML

来自分类Dev

使用动态值的Angular指令

来自分类Dev

在Angular指令中使用$ filter

来自分类Dev

在Angular指令中使用jQuery

来自分类Dev

使用Angular指令创建布局

来自分类Dev

如何使用“ this”声明Angular指令

来自分类Dev

不能使用 Angular 指令?

来自分类Dev

在Angular js中使用ng-repeat指令在表中显示数组数据

来自分类Dev

如何使用angular中的ngFor指令列出表中对象数组的所有元素?

来自分类Dev

使用代码段和指令指针生成指令的地址