如何在Angular中创建与ng-repeat隔离的单独范围?

roo*_*oot 6 html angularjs

我是AngularJS的新手,在理解Angular中的范围概念方面遇到了一些麻烦.我已经阅读了有关stackoverflow以及在线文章的一些帖子,它建议我创建一个自定义指令来创建一个隔离范围,但我无处可去......

至于我正在进行的项目,我试图制作一个按钮,当点击时,将触发textarea.但是,由于ng-repeat,当我只点击一个按钮时,所有按钮都会触发textarea.

我的.js文件:

angular.module('myApp')
  .controller('myCtrl', function ($scope, Question) {
    scope.visible = false;

    scope.toggle = function() {
      scope.visible = !scope.visible;
  };

  .directive("myDirective", function () {
    return {
      scope: {
        ngClick: '&',
        ngShow: '&'
      }
    }
  });
Run Code Online (Sandbox Code Playgroud)

这是我的HTML文件:

<ul>
    <li ng-repeat="object in objectList">
      <button type="text" myDirective ng-click="toggle()">Click</button>
      <textarea myDirective ng-show="visible"></textarea>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

rab*_*ron 3

Angular 在 ng-repeating 时创建子(非隔离)作用域,尝试一下,当您 ng-init 一个变量时,它仅在该重复 div 中可见。

<div ng-repeat="i in [0,1,2,3,4,5,6,7,8,9]" ng-init="visible=false">
  <button ng-click="visible=!visible">Toggle</button>
  <h1 ng-show="visible">look at me!</h1>
</div>
Run Code Online (Sandbox Code Playgroud)

普朗克