Binding Angularjs data outside the ng-view
我有一个包含菜单栏的所有页面的通用模板,它在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <body ng-app="sampleApp"> name is :{{name}}<br/> username is :{{uname}} <ul class="nav"> <li> Add name </li> <li> add username </li> </ul> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"> <script src="app.js"> </body> |
This issue with primitives can be easily avoided by following the"best practice" of always have a '.' in your ng-models – watch 3 minutes worth. Misko demonstrates the primitive binding issue with ng-switch.
Having a '.' in your models will ensure that prototypal inheritance is in play. So, use
1
2 <input type="text" ng-model="someObj.prop1"> rather than
<input type="text" ng-model="prop1">.— AngularJS Wiki - What are the nuances of scope prototypal / prototypical inheritance?
PLNKR上的演示
作用域按层次结构排列,类似于应用程序的DOM结构。每个AngularJS应用程序只有一个根作用域,但可以有任意数量的子作用域。
1 2 3 | ng-app --> $rootScope |- ng-controller --> $scope (container) |- ng-view --> $scope (view) |
通过使用:
Angular的$rootscope可以用于在应用程序的组件之间共享信息(除了其他用途)。我们不鼓励过分依赖它,因为它可能会受到污染,或者很难在应用程序的整个"堆栈"范围内上下追踪。但是,如果您确实需要或想要设置"全局"数据,它会工作:
在新的punkr中,您将使用ng模型和ng值作为文本输入。完全删除ng值。(它通常用于具有"value"属性的元素,如单选按钮和复选框,其中"value"是"checked"或"selected"等)。ng model是您想要的。
http://plnkr.co/edit/dnzodricxlhtg4dqovdj?P=预览
1 2 | name is :{{$root.name}} username is :{{$root.uname}} |
和
1 2 | Name: <input ng-model="$root.name"> You entered: {{$root.name}} |