Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在组件中单向绑定对象或数组的角度方式是什么?_Javascript_Angularjs - Fatal编程技术网

Javascript 在组件中单向绑定对象或数组的角度方式是什么?

Javascript 在组件中单向绑定对象或数组的角度方式是什么?,javascript,angularjs,Javascript,Angularjs,我正在创建一个组件来编辑简单对象的数组 根据,组件应该使用单向(我相信您引用的文档是专门讨论更改对象或数组属性的,因为此更改不会反映在父范围中。我看不出组件更改传入的对象有任何问题 例如,如果通过“对象”绑定将数组传递到组件中,然后组件将其“对象”属性设置为不同的数组,则原始父数组将不会引用此更改 与=的区别在于,组件范围中的绑定属性不受监视,这意味着如果您为组件范围中的属性指定新值,它将不会更新父范围。但是,请注意,父范围和组件范围都引用同一对象,因此如果您更改组件范围中的对象属性或数组元素因

我正在创建一个组件来编辑简单对象的数组


根据,组件应该使用单向(
我相信您引用的文档是专门讨论更改对象或数组属性的,因为此更改不会反映在父范围中。我看不出组件更改传入的对象有任何问题

例如,如果通过“对象”绑定将数组传递到组件中,然后组件将其“对象”属性设置为不同的数组,则原始父数组将不会引用此更改

与=的区别在于,组件范围中的绑定属性不受监视,这意味着如果您为组件范围中的属性指定新值,它将不会更新父范围。但是,请注意,父范围和组件范围都引用同一对象,因此如果您更改组件范围中的对象属性或数组元素因此,一般规则应该是永远不要更改组件范围中的对象或数组属性


对我来说,答案很简单-组件不需要执行数据操作。你告诉我你创建了组件来编辑数组?那么这就是你可以开始使用服务的地方。每个服务都是单例的,因此你可以从你注入它的每个地方引用相同的
对象
属性。签出JS团队谈到服务

通过作用域管理数据是鲁莽的。作用域很容易成为 被其他控制器、指令、模型和 比如。它很快就会变得混乱。有一个中央频道(在这个例子中是一个 服务)。。。 它不仅更干净,而且更易于管理 应用程序不断增长。最后,它使您的代码模块化 Angular擅长)你是否需要为他人提供该服务 项目中,您不需要深入研究范围、控制器、过滤器, 等找到相关的代码-它都在那里的服务


说到组件-首先它们是HTML指令。组件应该有HTML模板。组件的目的是在其模板中反映从父范围接收的一些数据,并传递一些事件或数据(这是用户交互的结果)如果您需要组件中的外部逻辑,最好将其委托给服务。

文档还声明“只有拥有数据的组件才应该修改它”。很公平。我认为“对象编辑器”可以编辑对象。我不同意您的说法,即您需要创建
对象的本地副本。
。保持对传入数组的引用不变,并通过回调在父数组中修改它。您如何实现输入和选择绑定,而不改变传入的数组在数组数据中?我不会…。我会变异传入的数组数据。也就是说,您可以探索为
change
事件添加侦听器,然后调用
preventDefault()
。将更改传递给父对象,并让其对对象进行变异。这似乎并不能回答问题。停止使用服务来执行数据操作没有任何问题-示例中使用控制器是为了方便。如果我们想将组件重新用于问题不在于实现,而在于您选择的整个方法
{
    objects: "<",
    addObject: "&",
    deleteObject: "&",
    updateObject: "&"
}