Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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 在ng视图外部绑定Angularjs数据_Javascript_Angularjs - Fatal编程技术网

Javascript 在ng视图外部绑定Angularjs数据

Javascript 在ng视图外部绑定Angularjs数据,javascript,angularjs,Javascript,Angularjs,我有一个包含菜单栏的所有页面的通用模板,它位于ng视图之外。从ng视图内的一个页面,我想将输入数据绑定到此模板区域(此区域位于与输入页面不同的控制器下)。我的意思是当我输入名称时,该名称将显示在模板区域中。是否可能? 这是你的电话号码 名称为:{{name}} 用户名为:{{uname}} Angular的$rootScope可用于在应用程序组件之间共享信息(除其他用途外)。不鼓励过多地依赖它,因为它可能会受到污染,或者很难在应用程序的整个范围“堆栈”上下跟踪。但是,如果您确实需要或想

我有一个包含菜单栏的所有页面的通用模板,它位于
ng视图
之外。从
ng视图
内的一个页面,我想将输入数据绑定到此模板区域(此区域位于与输入页面不同的控制器下)。我的意思是当我输入名称时,该名称将显示在模板区域中。是否可能? 这是你的电话号码


名称为:{{name}}
用户名为:{{uname}}

Angular的$rootScope可用于在应用程序组件之间共享信息(除其他用途外)。不鼓励过多地依赖它,因为它可能会受到污染,或者很难在应用程序的整个范围“堆栈”上下跟踪。但是,如果您确实需要或想要设置“全局”数据,它可以工作:

在新的plunkr中,文本输入同时使用ng模型和ng值。完全删除ng值。(它通常用于具有“值”属性的元素,如单选按钮和复选框,其中“值”为“选中”或“选定”等。)ng模型就是您想要的

名称:
您输入:{{$root.name}
通过遵循“最佳实践”,可以很容易地避免原语的这个问题–观看3分钟。Misko演示了ng开关的基本绑定问题

在模型中使用“.”将确保原型继承发挥作用。所以,使用

<input type="text" ng-model="someObj.prop1"> rather than 
<input type="text" ng-model="prop1">.
通过使用:
视图控制器中的
ng model
指令使用原型继承从视图外部查找
$scope.obj
。然后,它可以获取并设置该对象的
name
属性

有关详细信息,请参阅


$rootScope
存在,但可用于邪恶 AngularJS中的作用域形成一个层次结构,典型地从树顶部的根作用域继承。通常可以忽略这一点,因为大多数视图都有自己的控制器,因此也有自己的作用域

有时,您希望将某些数据片段设置为整个应用程序的全局数据。对于这些,您可以注入
$rootScope
,并像任何其他作用域一样在其上设置值。由于作用域继承自根作用域,这些值将可用于附加到指令(如
ng show
)的表达式,就像本地
$scope
上的值一样

当然,全局状态很糟糕,您应该谨慎地使用
$rootScope
,就像您(希望)在任何语言中使用全局变量一样。特别是,不要将其用于代码,只用于数据。如果你想把一个函数放到
$rootScope
上,那么最好把它放到一个可以在需要的地方注入的服务中,并且更容易测试

相反,不要创建一个服务,它的唯一目的是存储和返回数据位


不知道为什么,但ng值现在不起作用!对不起,我没有看到ng值对不起,我已经更新了问题和plunker!ng值使其跳闸。请参阅我的修订答案+plunkr。感谢您的努力,但在这种情况下,rootScope可能有点奇怪,因为它将在重新加载页面后消失$obj就像$rootScope变量一样工作。它是用于原型继承的吗?
name is :{{$root.name}}
username is :{{$root.uname}}
Name: <input ng-model="$root.name">
<h1>You entered: {{$root.name}}</h1>
<input type="text" ng-model="someObj.prop1"> rather than 
<input type="text" ng-model="prop1">.
ng-app --> $rootScope |- ng-controller --> $scope (container) |- ng-view --> $scope (view)