Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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
Angularjs 如果从范围中分离,为什么要使用ng?_Angularjs - Fatal编程技术网

Angularjs 如果从范围中分离,为什么要使用ng?

Angularjs 如果从范围中分离,为什么要使用ng?,angularjs,Angularjs,ng是否正在从范围中分离输入?或者我只是做错了什么? 使用时: <input ng-if="1===1" ng-model="name"> 输入的更改不会影响范围。尝试移除ng if和walla! 那是什么 ng如果创建了一个新的子作用域,那么您将在子作用域而不是原始作用域中编辑模型。如果您将其更改为$parent.name,它就可以正常工作 下面是Angular团队的一位成员的推理: ng开关创建新作用域的原因是使用了作用域 用于内存管理 当交换机分支被移除时,我们需要移除所

ng是否正在从范围中分离输入?或者我只是做错了什么? 使用时:

<input ng-if="1===1" ng-model="name">

输入的更改不会影响范围。尝试移除ng if和walla! 那是什么


ng如果
创建了一个新的子作用域,那么您将在子作用域而不是原始作用域中编辑模型。如果您将其更改为
$parent.name
,它就可以正常工作

下面是Angular团队的一位成员的推理:

ng开关创建新作用域的原因是使用了作用域 用于内存管理

当交换机分支被移除时,我们需要移除所有 绑定以及所有单击侦听器。这一切都完成了 通过范围

换言之,每当DOM结构发生变化时,一个新的作用域 需要被创造出来,这样我们才能在自己之后适当地清理


$20Dos$20ng开关/angular/n_PlBtwemJg/kkk6me3jde88j

由于
ng如果创建一个隔离作用域,它将无法覆盖其父作用域的属性。这就是原型继承的工作原理

虽然您可以使用
$parent
挖掘封闭范围,但这是一个脆弱的解决方案,如果在层次结构中引入另一个级别,它将崩溃

相反,您不应该将属性直接放在作用域上,而应该将它们放在对象上

您可以进行更改以修复此问题:

app.controller('MainCtrl', function($scope) {
  $scope.model = {
    name: 'World'
  }
});


你好{{model.name}}


请看

我认为您在脆弱的结构和等级制度方面提出了一个很好的观点,这应该是公认的答案。
<body ng-controller="MainCtrl">
<input ng-if="1===1" ng-model="model.name">
  <p>Hello {{model.name}}!</p>
</body>