javascript - ng-repeat 中的 Angularjs 指令不更新外部 Controller 数据

标签 javascript angularjs angularjs-directive angularjs-ng-repeat isolate-scope

我有一个在 ng-repeat 内部使用的隔离范围指令,它从该模板的 Controller 迭代数组。模板如下:

<!DOCTYPE html>
<html>

  <head>
    <link rel="stylesheet" href="bootstrap.min.css" />
    <script src="angular.min.js"></script>
    <script src="script1.js"></script>
  </head>

  <body ng-app="AddNewTest" ng-controller="AddNewController">
    <div class="items" ng-repeat="row in rows">
      <add-new-row data="row" index="$index"></add-new-row>
    </div>
  </body>

</html>

该指令定义如下:

angular.module('AddNewTest', []).
directive('addNewRow', function ($timeout) {
  return {
    controller: 'AddNewController',
    link: function (scope, element, attribute) {
      element.on('keyup', function(event){
        if(scope.index + 1 == scope.rows.length) {
          console.log('keyup happening');
          $timeout(function () {
            scope.rows.push({ value: '' });
            scope.$apply();
          });
        }
      })
    },
    restrict: 'E',
    replace: true,
    scope: {
      index: '='
    },
    template: '<div class="add-new"><input type="text" placeholder="{{index}}" ng-model="value" /></div>'
  }
}).
controller('AddNewController', function ($scope, $timeout) {
  $scope.rows = [
    { value: '' }
  ];
});

但即使在添加新行并执行 $apply() 后,ng-repeat 也不会渲染添加的新数据。请帮忙。

Plnkr Link Here

最佳答案

将行数组传递给指令,如下所示:-

 scope: {
  index: '=',
  rows :'='
},

<add-new-row rows="rows"  index="$index"></add-new-row>

Working plunker

关于javascript - ng-repeat 中的 Angularjs 指令不更新外部 Controller 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39206278/

相关文章:

javascript - AngularJS 模块依赖注入(inject)与父模块共享它的依赖

javascript - 检查多个字段是否存在,如果不存在则返回 MongoDB 中的所有项目

JavaScript 验证复选框

javascript - 如何在不破坏格式化程序的情况下为 flowtype 声明 react 组件的模块类型?

javascript - 访问 AngularJs 指令 Controller

javascript - ionicScrollDelegate 与 ionic (AngularJS)

javascript - 将 Polymer 与 Angularjs 一起使用

javascript - 双动画路径绘制错误,使用 Raphael.js

Javascript:安排稍后的 HTTP 请求

javascript - 带有 Chart Angular 的 AngularJS 资源(Morris.JS 指令)