<!doctype html> <html ng-app="firstapp"> <head> <meta charset="utf-8"> <script src="angular-1.3.0.js"></script> </head> <body> <div ng-controller="parentctrl"> <input ng-model="args"> <div ng-controller="childctrl"> <input ng-model="args"> </div> </div> <script> var app=angular.module('firstapp',[]); app.controller('parentctrl',function($scope) { $scope.args = '123'; }).controller('childctrl', function($scope) { }); </script>
案例说明:
虽然在 childctrl 中没有定义具体的 args 属性,但是因为 childctrl 的作用域继承自 parentctrl 的作用域,
因此,childctrl通过原型链 到父作用域args 属性并设置到input中。且在父input中输入值自己动同步到子input中
但是反之不行。即子中修改,无法改变父中的值,且导致父修改后子也不同步了,原因:在子作用域input输入内容时,
因为 html 代码中 model 明确绑定在 childctrl 的作用域中,因此 angularjs 会为 childctrl 生成一个 args 原始类型属性。
根据 angularjs 作用域继承原型机制,childctrl 在自己的作用域找到args属性值,故就不从父中查找args值。
导致最终子作用域有args,父作用域有args,子和父之间的值不会再保持同步。
以上所述就是本文的全部内容了,希望大家能够喜欢。
如对本文有疑问, 点击进行留言回复!!
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
分享Angular http interceptors 拦截器使用(推荐)
网友评论