Angularjs 角度控制器中类似控制器的独立作用域
我正在开发一个应用程序,它在一个页面上使用多个(但类似)控制器(Angularjs 角度控制器中类似控制器的独立作用域,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我正在开发一个应用程序,它在一个页面上使用多个(但类似)控制器(controllerA)和另一个控制器(controllerB),可以更改某些属性,但前提是之前选择了controllerA的元素 (在controllerA中,某些属性可能具有默认值,这些值通过使用数据属性传递和应用) 在此阶段,我只能使用controllerB修改最后一个颜色属性(这很有意义,因为这是活动范围。我的问题是,如何将controllerB范围更改为所选controllerA的“活动”范围副本 // Code goes
controllerA
)和另一个控制器(controllerB
),可以更改某些属性,但前提是之前选择了controllerA
的元素
(在controllerA
中,某些属性可能具有默认值,这些值通过使用数据属性传递和应用)
在此阶段,我只能使用controllerB
修改最后一个颜色属性(这很有意义,因为这是活动范围。我的问题是,如何将controllerB范围更改为所选controllerA
的“活动”范围副本
// Code goes here
var webApp = angular.module("webApp", []);
webApp.controller("controllerA", function($scope, $rootScope, $element, styleFactory){
$scope.selected = false;
var color = angular.element($element[0]).attr("data-style-color");
styleFactory.setColor(color);
$scope.data = styleFactory.getData();
$scope.select = function(){
$scope.selected = !$scope.selected;
}
});
webApp.controller("controllerB", function($scope, $rootScope, $element, styleFactory){
$scope.data = styleFactory.getData();
});
webApp.factory("styleFactory", function(){
var data = {"style":"color:yellow"}
return {
setColor: function(color){
data = {"style":"color:"+color};
},
getData: function(){
return data;
}
};
});
例如:
谢谢,
--iM您可以看到一个经过修改的plnkr,它可以按照您的描述工作 就我个人而言,我会重新构建应用程序的架构,并重新思考styleFactory的实现 需要思考的几点:
替换整个数据对象,因此data={“style”:“color:+color}
仅适用于最后一个$scope.data=styleFactory.getData()
,因为所有其他对象的引用都会丢失controllerA
- 尝试创建位于
和controllerA
顶部的父控制器controllerB
- 尝试使用指令解决此问题