Javascript 如何使用控制器2在div的ng类中使用控制器1的Angular$scope.variable
我有两个控制器boxController.js和homeController.js。在box.html页面上,我初始化了boxController.js。现在,我需要在box.html页面上使用ng类,但我需要在ng类中使用的变量是在homeController.js中 我尝试过服务和工厂,但这些返回变量可以在多个控制器之间共享。不知何故,我对在html中使用共享变量而不是在控制器中使用感到困惑Javascript 如何使用控制器2在div的ng类中使用控制器1的Angular$scope.variable,javascript,angularjs,angularjs-scope,angular-controller,angular1.6,Javascript,Angularjs,Angularjs Scope,Angular Controller,Angular1.6,我有两个控制器boxController.js和homeController.js。在box.html页面上,我初始化了boxController.js。现在,我需要在box.html页面上使用ng类,但我需要在ng类中使用的变量是在homeController.js中 我尝试过服务和工厂,但这些返回变量可以在多个控制器之间共享。不知何故,我对在html中使用共享变量而不是在控制器中使用感到困惑 **** homeController.js **** $scope.defaultState =
**** homeController.js ****
$scope.defaultState = false;
$scope.submitNow = false;
$scope.default = function () {
$scope.defaultState = !$scope.defaultState
}
$scope.defaultToggle = function () {
$scope.submitNow = !$scope.submitNow
}
**** box.html (This page uses boxController.js, not homeController.js) ****
// I need to use $scope.submitNow and $scope.defaultState variables in the ng-class of this div
<div ng-controller="boxController" class="ui" ng-class="{'two.column.grid' : submitNow, 'one.column.grid' : defaultState}">
</div>
**homeController.js****
$scope.defaultState=false;
$scope.submitNow=false;
$scope.default=函数(){
$scope.defaultState=!$scope.defaultState
}
$scope.defaultToggle=函数(){
$scope.submitNow=!$scope.submitNow
}
****html(此页面使用boxController.js,而不是homeController.js)****
//我需要在这个div的ng类中使用$scope.submitNow和$scope.defaultState变量
您有一些方法可以做到这一点
只需添加到@chickensups的答案中,您还可以使用
$on
和$broadcast
。您可以在homeController.js中执行此操作
$scope.defaultState = false;
$scope.submitNow = false;
$scope.default = function () {
$scope.defaultState = !$scope.defaultState;
$rootScope.$broadcast('some-event', { defaultState: $scope.defaultState, submitNow: $scope.submitNow});
}
$scope.defaultToggle = function () {
$scope.submitNow = !$scope.submitNow;
$rootScope.$broadcast('some-event', { defaultState: $scope.defaultState, submitNow: $scope.submitNow});
}
在您的boxController.js
中,您可以捕获如下事件:
$scope.$on('some-event', function(event, args) {
$scope.defaultState = args.defaultState;
$scope.submitNow = args.submitNow;
});
谢谢我让它工作,但有一个不寻常的问题。你知道为什么会发生这种情况,以及如何解决?默认ng类工作正常,因为它以正确的顺序添加“两列网格”,但在or条件下,它没有以正确的顺序添加类。将添加一个柱网轴线作为。。。柱网one@wibwaj让你知道我的超能力是用问题的细节来回答问题,而不是心灵感应。因此,如果你也能告诉我什么是异常问题
,那就太好了,我将能够帮助你。Lol对不起,我按enter键换行了,但这已经提交了我的文本。我最终更新了我的帖子。请再次检查@wibwaj我在您的代码中没有看到或条件?你想达到什么目标?(我还建议您关闭此问题,并用当前问题创建另一个问题,因为此问题与当前问题无关)完成!你能看看这个吗?