AngularJS视图未更新我们的src

AngularJS视图未更新我们的src,angularjs,Angularjs,在这种情况下,在src内检测到编辑的值,但src外的值保持空白 在plnkr中选择不同的单选按钮,外部src不会更新 我可以知道为什么以及如何解决此问题吗?这是因为ng include正在创建自己的范围,而您使用单选按钮指定的ng型号值仅限于该范围 因此,主体中的{{filteringText}}不知道filteringText是用ng模型设置的 如果我们将ng的内容转移到身体中,比如: <body ng-controller="testCtrl"> <div

在这种情况下,在src内检测到编辑的值,但src外的值保持空白

在plnkr中选择不同的单选按钮,外部src不会更新


我可以知道为什么以及如何解决此问题吗?

这是因为ng include正在创建自己的范围,而您使用单选按钮指定的ng型号值仅限于该范围

因此,主体中的{{filteringText}}不知道filteringText是用ng模型设置的

如果我们将ng的内容转移到身体中,比如:

  <body ng-controller="testCtrl">


    <div ng-include src="'input.html'"></div>

  <input type="radio" ng-model="filteringText" value="">All
  <input type="radio" ng-model="filteringText" value="Add">Add
  <input type="radio" ng-model="filteringText" value="Edit">Edit
  <input type="radio" ng-model="filteringText" value="Delete">Delete
  </br>
    Outside src : {{filteringText}}
<input type="radio" ng-model="$parent.filteringText" value="">All
<input type="radio" ng-model="$parent.filteringText" value="Add">Add
<input type="radio" ng-model="$parent.filteringText" value="Edit">Edit
<input type="radio" ng-model="$parent.filteringText" value="Delete">Delete
<br/>
Inside src : {{$parent.filteringText}}

全部的
添加
编辑
删除

外部src:{{filteringText}

如果我们想从ng include中更新主应用程序范围中的值,我们可以在input.html文件中使用$parent.value,如下所示:

  <body ng-controller="testCtrl">


    <div ng-include src="'input.html'"></div>

  <input type="radio" ng-model="filteringText" value="">All
  <input type="radio" ng-model="filteringText" value="Add">Add
  <input type="radio" ng-model="filteringText" value="Edit">Edit
  <input type="radio" ng-model="filteringText" value="Delete">Delete
  </br>
    Outside src : {{filteringText}}
<input type="radio" ng-model="$parent.filteringText" value="">All
<input type="radio" ng-model="$parent.filteringText" value="Add">Add
<input type="radio" ng-model="$parent.filteringText" value="Edit">Edit
<input type="radio" ng-model="$parent.filteringText" value="Delete">Delete
<br/>
Inside src : {{$parent.filteringText}}
全部
添加
编辑
删除

在src内部:{{$parent.filteringText}

这是一个典型的例子,说明
ng型号
中不包含

下面是解决此问题的相关plunker

这是因为ng include创建了一个新的作用域,并且由于原型在javascript中的工作方式,子原型中的原语值会覆盖父原型中的原语。 如果在原型继承方面不清楚,请阅读


PS:使用
$parent
不是一个好的设计。它将视图与逻辑紧密结合。

谢谢。data.filteringText比使用$parent.filteringText好。该链接真的很有帮助,我需要仔细阅读,正如您的答案一样。同意,比我的解决方案更好!我忘了angular在自己的作用域中找不到值时是如何向上爬作用域的。回到这里,我该如何查看filteringText<代码>$scope.$watch('data.filteringText',…)即使在加载应用程序时也似乎没有启动。我的环境可能有问题,在观看
filteringText