动态创建元素的Angularjs绑定问题

用户名

我试图绑定一个<p><input>我的应用程序,但它没有发生。由于这两个元素都是动态创建的,所以我想也许可以使用$ apply,但是没有成功。除此之外,其他所有功能都按预期运行。

我的代码是有点复杂,所以这里是一个plunker来证明我的情况。

HTML:

<body ng-app="tata" ng-controller="mainController">
    <div id="main">
      <div ng-controller="ctrl1">
        <button ng-click="changeCard()">Add Dynamic Bound Elements </button>
        <page id="front" size="A4"></page>
        <div id="detailsFront"></div>
      </div>
    </div>
  </body>

元素是使用2个函数生成的,对于INPUT来说启用on,对于P而言则另一些。这里是inputs的放置位置:

<div id="detailsFront">         
</div>

以及p放置s的位置:

<page size="A4" id="front">
</page>

负责该视图的控制器具有2个功能,它们以相同的$scope功能连续运行填充<p>s:

 buildPDF : function (parentElement){
      var element = angular.element(document.getElementById( parentElement ));
      ele = "<p ng-bind='id7'> Test Run </p>";
      element.append(ele);
    }

    element.append(ele);

然后是inputs:

buildPDFControllers : function (parentElement){
          var element = angular.element(document.getElementById( parentElement ));
      ele = "<label for='id7'>Some Label</label> <input name='id7' type='text' ng-model='id7'>";
      element.append(ele); 
        }
米科·维塔拉(Mikko Viitala)

您必须始终添加$compile新元素。

的HTML

<body ng-app="tata">
  <div ng-controller="ctrl1">
    <page id="front"></page>
  </div>
</body>

的JavaScript

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

  .controller('ctrl1', function ($scope, $compile) {
    $scope.id = 'some id here';

    var element = angular.element(document.getElementById('front'));
    var p = '<p ng-bind="id">Test Run</p>'; // <- will be bound/replaced with $scope.id
    element.append(p);

    $compile(element.contents())($scope);
  }); 

但是,也许最好改用指令?考虑:

HTML模板

<body ng-app="cards" ng-controller="Ctrl">
  <button ng-click="addCard()">Add Card</button>
  <div ng-repeat="card in cards">
    <card ng-model="card"></card>  
  </div>
</body>

的JavaScript

angular.module('cards',[])

  .controller('Ctrl', function($scope) {
    $scope.cards = [];

    $scope.addCard = function() {
      var next = $scope.cards.length + 1; 
      $scope.cards.push({id: next, label: next});
    };
  })

  .directive('card', function() {
    return {
      restrict: 'E',
      require: 'ngModel',
      scope: {
        ngModel: '='
      },
      template: '<p>Directive model: {{ ngModel | json }}</p>' +
                '<label>Label: </label>' + 
                '<input name="{{ ngMode.id }}" ' + 
                '       type="text" ' +
                '       ng-model="ngModel.label">',
      link: function(scope) {
      }
    };
  });

图片

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS:动态创建元素

来自分类Dev

动态创建元素

来自分类Dev

从对象动态创建元素

来自分类Dev

使用动态创建的元素绑定angularjs数据

来自分类Dev

使用动态创建的元素绑定angularjs数据

来自分类Dev

在Angular中动态创建元素

来自分类Dev

动态创建元素的角度ng隐藏

来自分类Dev

使用javascript动态创建元素

来自分类Dev

在Angular中动态创建元素

来自分类Dev

使用CycleJS动态创建元素

来自分类Dev

AngularJS使用指令($ compile)并使用单例服务动态创建元素

来自分类Dev

动态将Angularjs绑定到新创建的html元素

来自分类Dev

可以在.applyBindings()之后创建元素并绑定到VM吗?

来自分类Dev

在JavaScript中使用EventListener动态创建元素

来自分类Dev

动态创建元素时,选择的插件不起作用

来自分类Dev

动态创建元素并添加onclick事件不起作用

来自分类Dev

如何使用JSON文件在HTML中动态创建元素

来自分类Dev

XSLT-使用Java动态创建元素

来自分类Dev

动态创建元素时Javascript事件处理程序消失

来自分类Dev

使用JSON文件中的数据动态创建元素

来自分类Dev

javascript创建元素,动态增加类名的数量

来自分类Dev

在javascript中动态创建元素和类的实现

来自分类Dev

动态创建元素,但使用<a href>代替按钮onClick

来自分类Dev

在 JavaScript 中设置动态创建元素的图像源

来自分类Dev

如何使用javascript在html页面中动态创建元素?

来自分类Dev

创建元素列表

来自分类Dev

动态React元素创建的问题

来自分类Dev

动态创建 tkinter 元素的问题

来自分类Dev

用jQuery创建元素