angularjs $ scope变量,用于来自单个控制器的多个视图

时间:2014-02-19 06:35:30

标签: angularjs

我是angularjs的新手。目前我正在使用angularjs和mvc4构建spa。 我可以在angularjs的不同视图中使用$ scope变量吗? Plz帮助我。

3 个答案:

答案 0 :(得分:0)

$ scope仅限于控制器。尝试使用$rootScope

答案 1 :(得分:0)

要在不同的控制器之间传递变量,请注册factory,然后将工厂对象传递给每个控制器中的$ scope。

简单演示http://plnkr.co/edit/PdDmUz?p=preview

更新:另一个演示,显示使用service / factory在不同视图中使用单个变量。 http://plnkr.co/edit/P2UudS?p=preview

的index.html

<body ng-controller="MainCtrl">
<h3>Controller 1</h3>
    Check me, to check both: 
    <input type="checkbox" ng-model="selected.data" />
    <pre>selected.data: {{selected.data}}</pre>

<h3>Controller 2</h3>
<div ng-controller="MainCtrl2">
    Or, check me: 
    <input type="checkbox" ng-model="selected2.data" />
    <pre>selected2.data: {{selected2.data}}</pre>
</div>
</body>

app.js

app.controller('MainCtrl', function($scope,uiFieldState) {
    $scope.selected = uiFieldState.uiObject;
})

app.controller('MainCtrl2', function($scope,uiFieldState) {
    $scope.selected2 = uiFieldState.uiObject;
})

app.factory('uiFieldState', function () {
    return {uiObject: {data: null} }
});

答案 2 :(得分:-1)

Angular $ scope是为子范围原型继承的,因此基本上你可以拥有一个父$ scope,它在几个子范围之间共享。

<div ng-controller="parentController">
    <div ng-include="view1.html"></div>
    <div ng-include="view2.html"></div>
</div>

这两个视图都可以访问parentController