停止模型上的双向数据绑定

2024-03-14

我对 Angular 还很陌生,所以如果这里有一些不正确的想法,请告诉我。

我正在尝试基于同一数据集创建两个单独的范围变量。我假设我能够将它们设置为不同的变量(如下所示)并且它会起作用。然而,我发现,无论它们的名称是什么或如何定义(即使是在指令中!),更改一个都会改变它们全部。

所以...我期望/希望看到的是,如果我更改顶部重复中的输入,它只会更改该重复的模型。目前它改变了这三个方面。

我这里哪里出错了?我认为这与双向数据绑定有关。提前致谢!

Plnkr http://plnkr.co/edit/xQnx9JQ0NK9bWgNE0SKm?p=preview

HTML:

 <h4>data</h4>
    <div ng-repeat="person in data">
      {{person.name}}
      <input ng-model="person.name" />
    </div>
    {{data[0].name}}
    <br>
    <br>

    <h4>testData</h4>
    <div ng-repeat="person in testData">
      {{person.name}}
      <input ng-model="person.name" />
    </div>
    {{testData[0].name}}

    <h4>Directive</h4>
    <div tester data="data"></div>

指令 HTML:

<div ng-repeat="person in data">
  {{person.name}}
  <input ng-model="person.name" />
</div>
{{data[0].name}}

JS:

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

(function () {

    var testController = function ($scope) {

      var data = [
        {name:'Jordan', age:30},
        {name:'Sean', age:32},
        {name:'Seth', age:26}
      ];

      $scope.data = data;

      $scope.testData = data;
    }    

    testController.$inject = ['$scope', '$http'];

    app.controller('testController', testController);


}())

app.directive('tester', function(){
    return {
        restrict: 'A',
        templateUrl: 'directive.html',
        //If percent = true then that table should have a "percent change" th
        scope:{
            data: '=data'
        }
    }

})

我正在尝试基于相同的变量创建两个单独的范围变量 数据集。我以为我可以将它们设置为不同的 变量(如下所示)并且它会起作用

实际上,这两个 JavaScript 变量都指向内存中相同的数据结构。因此,当您修改此结构时,它会反映到它们两者。想想那些data and testData变量作为指向相同数据的指针。

你可以copy https://docs.angularjs.org/api/ng/function/angular.copy此数据结构是为了在内存中创建它的 2 个不同实例,以便对一个实例的更改不会反映另一个实例的更改:

$scope.data = data;
$scope.testData = angular.copy(data);

如果您想在指令中反映这一点,请继续并克隆您传递给它的实例:

<div tester data="angular.copy(data)"></div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

停止模型上的双向数据绑定 的相关文章

随机推荐

  • while ( ) 循环中的“--”运算符

    我正在读K R书 第63页有一行 while lim gt 0 c getchar EOF c n 其中 lim 是等于 1000 的 int 我的问题是 为什么lim在随后运行 while 循环后不会减少吗 照我看来 lim相当于 lim
  • Angular Ag-Grid:在 Ag 网格单元格中添加 PrimeNg P-dropdown 作为 html 元素

    如何在 Ag Grid 单元格中包含基本 HTML 元素 下面是我的 html PrimeNg p dropdownMyComponent html
  • Django 通道 Websockets 立即连接和断开连接

    首先是一些背景知识 我正在研究本教程 https blog heroku com in deep with django channels the future of real time apps in django https blog
  • 是什么导致我的 SDL2 程序中出现杂散像素?

    我发现使用 SDL2 绘制的对象上附加了很多杂散像素 添加额外像素的对象包括线条 填充矩形以及转换为纹理的 TTF 文本 这SDL RenderFillRect https wiki libsdl org SDL RenderFillRec
  • 是否可以将 Python 或 Perl 与 Ruby 集成?

    是否可以集成 Python 和 或 Perl 和 Ruby 我看过http www goto info waseda ac jp fukusima ruby python doc http www goto info waseda ac j
  • Flickr API 返回重复的照片

    我在 flickr API 中遇到了一个令人困惑的问题 当我进行照片搜索 flickr photos search 并请求高页码时 我 经常会收到针对不同页码返回的重复照片 这是三个 URL 它们每个应该返回三组不同的图像 然而 奇怪的是
  • 检查特定进程正在运行的快速方法

    要检查进程是否正在运行 可以使用 CreateToolHelp32SnapShot Windows API 函数并枚举正在运行的进程 答案问题中给出了示例 C C 代码 使用C 检查Windows上某个特定进程是否正在运行 https st
  • 如何在 WKInterfaceTable 中创建部分

    由于没有委托 我们如何在表中创建部分 有没有其他方法来创建部分 或者我们是否必须使用两个表 WKInterfaceTable 不像 UITableView 那样灵活 但您可以使用不同的行类型手动创建行 并根据每个单元格的类型填充内容 看一下
  • Rails:从 webpacker 提供的文件访问 JS 模块方法

    Context 我尝试使用 Webpacker gem 将应用程序中的资产移动到 webpack 应用程序很大 所以我需要部分完成 到目前为止做了什么 我成功地使用调用脚本javascript pack tag 我导出一个超级简单的模块 j
  • 为什么 Kotlin 中函数不能直接用作 lambda?

    在 Kotlin 中我们不能写 arrayOf 1 2 3 forEach println 但我们必须调用forEach using println 这是因为forEach期望一个 lambda 但是println是一个函数 为什么这些类型
  • 显示:Chrome 中出现了磨合?

    我尝试过使用display run in为了创建一个语义化且美观的元数据名称 值列表 喜欢这样 dl dt Subject dt dd A Question dd dt From dt dd Mr Smith dd dt dt dl
  • 防止 unlist 删除 NULL 值

    我有一个列表向量 我使用unlist在他们 向量中的一些元素是NULL and unlist似乎正在放弃它们 我怎样才能防止这种情况发生 这是一个简单 非 工作示例 展示了这一点不需要的功能 of unlist a c list p1 2
  • iPhone safari 上的奇怪点击事件气泡在冒泡到 document.body 之前停止

    我已将点击事件绑定为 document body onclick function alert aaa 无论我点击什么元素 它在 Android 上或 IOS 上的 Chrome 上都表现良好 但在 iPhone safari 上单击除 a
  • 检测变化的多对多关系

    我试图理解为什么 DbContext 没有检测到多对多关系的变化 这是我在模型配置中设置的 this Configuration ValidateOnSaveEnabled false this Configuration ProxyCre
  • 如何将 PIL 与 PyPy 一起使用?

    我进行了一些搜索 但找不到将 PIL 与 PyPy 一起使用的教程 根据 PyPy 的博客 支持 PIL 我在 PYTHONPATH 中使用 pip 安装了 PIL 下载后 pip make 2个 pyd文件 imaging pyd和 im
  • 将我自己的 SQLite DB 从 Asset 文件夹复制到

    我不明白为什么我无法将数据库文件 abic 复制到应用程序目录 data data context getPackageName databases 这是我的 DataBaseHelper 类 import java io File imp
  • 如何查明转换是否已在节点上运行?

    我怎样才能知道节点上是否已经有一个转换正在运行 例如FadeTransition 您可以随时使用过渡 http docs oracle com javafx 2 api javafx animation Transition html 状态
  • 代码契约:如何处理继承的接口?

    我正在使用 MS Code Contracts 并且在使用接口继承和 ContractClassFor 属性时遇到了障碍 给定这些接口和合约类 ContractClass typeof IOneContract interface IOne
  • IPython 3.5 返回“错误的解释器:没有这样的文件或目录”

    我在尝试使用 IPython 时遇到随机错误 我现在突然无法使用 iPython3 没有任何解释 我不记得除了以太坊客户端之外安装过任何重要的东西 而且我没有下载哈希值或任何东西 突然我明白了 cchilders ipython3 bash
  • 停止模型上的双向数据绑定

    我对 Angular 还很陌生 所以如果这里有一些不正确的想法 请告诉我 我正在尝试基于同一数据集创建两个单独的范围变量 我假设我能够将它们设置为不同的变量 如下所示 并且它会起作用 然而 我发现 无论它们的名称是什么或如何定义 即使是在指