Javascript 如何在angularjs中更改控制器外部的$scope变量
我想在控制器外部更改Javascript 如何在angularjs中更改控制器外部的$scope变量,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我想在控制器外部更改$scope.outsidescope。我正在使用$routeProvider路由和更改控制器。$scope.outsidescope位于ng视图的外部 我的问题是如何在ng视图之外更改$scope.value 示例代码: <html ng-app="Myapp"> ....... <body> <div> {{outsidescope}} </div> <div class="" data-
$scope.outsidescope
。我正在使用$routeProvider
路由和更改控制器。$scope.outsidescope
位于ng视图的外部
我的问题是如何在ng视图
之外更改$scope.value
示例代码:
<html ng-app="Myapp">
.......
<body>
<div>
{{outsidescope}}
</div>
<div class="" data-ng-view></div>
</body>
</html>
使用$rootScope而不是$scope在应用程序中共享数据。但是创建自定义服务是最好的方法。不可能在控制器外部更改$scope,因为它在控制器外部不可用
如果您想这样做,您可以使用父作用域$rootScope,您可以在应用程序中的任何位置访问它
但根据您的要求,最好使用ng bind而不是表达式,在路由器中,您可以调用s resolve为每个url分配该值。在控制器之间共享数据的方法只有两种
1) 在$rootScope中绑定数据
2) 服务中的绑定数据{{outsidescope}}使用分区上的控制器名称,但仍然不清楚您想要做什么。你的布局和解释过于简单了。使用服务是在控制器之间共享数据的典型最佳方法。@charlietfl Yaa经过大量研究,我发现它将由服务完成。但当我在第一个div中添加一个控制器时,它显示了角度误差。问题真的不清楚。模板中的scope.value
在哪里?哪种模板?代码中的这个$scope.outsidescope
怎么样?你的代码示例和你对问题的描述根本没有联系。但控制器外面的甚至意味着什么?如果它来自前面提到的另一个控制器,则使用服务共享数据。你只是没有提供足够的细节,这是不赞成的做法,很少有任何需要把东西放在$rootScope中,除非它们需要全局ng bind
和{}
做完全相同的事情作为定向绑定。阅读文档。通常情况下,您不直接使用ngBind,而是使用类似于{expression}但不太详细的双卷曲标记。
是的,但是您的用户{{expression}},当您加载页面时,它将显示{expression}直到未分配值,并且使用ng bind,在分配值之前,它将不显示任何内容。所以,我认为使用ng-bind更好。但这和你们在回答中所说的完全不同,你们在回答中所说的非常误导,这与OP的问题无关。正确使用ng斗篷和指令也可以避免该问题
var app = angular.module('Myapp', ['ngRoute']).
config(['$routeProvider', function($routeProvider) {
$routeProvider
.when("/", {templateUrl: "partials/home4.html", controller: "PageCtrl"})
.otherwise({
redirectTo: '/pages/404'
})
}]);
app.controller('PageCtrl', ['$cookies',function ($scope) {
$scope.outsidescope = 'Some thing.';
}