Вчера я увидел, что мой сотрудник написал огромный контроллер только с одним «Объектом бога»$scope
, который должен выглядеть следующим образом.
myApp.controller('ComplexController', ['$scope', function($scope) {
$scope.firstTab = {
init: function() {
$scope.firstTab.data1.foo = $scope.firstTab.DefaultData1.foo;
$scope.$watch('firstTab.data1.foo', function(){
// do something
});
},
defaultData1: {
foo: 'bar'
},
data1: {
foo: 'bar',
publiclyUsedMethod1: function() {},
publiclyUsedMethod2: function() {},
privatelyUsedMethod1: function() {},
privatelyUsedMethod2: function() {},
privatelyUsedMethod3: function() {},
privatelyUsedMethod4: function() {},
privatelyUsedMethod5: function() {}
},
data2: {
// Same code pattern as above
},
data3: {
// Same code pattern as above
},
data4: {
// Same code pattern as above
}
};
$scope.secondTab = {
// Same code pattern as above
};
$scope.thirdTab = {
// Same code pattern as above
};
$scope.refresh = function(){
// do something
};
$scope.$watchCollection('[$scope.firstTab.data1.foo, $scope.secondTab.data1.foo, $scope.thirdTab.data1.foo]',function(newValues,oldValues){
// some logic
$scope.refresh();
});
$scope.firstTab.init();
$scope.secondTab.init();
$scope.thirdTab.init();
}]);
Что вы думаете, что это за шаблон? Какова основная цель объекта $scope
? Можно ли хранить каждый частный и общедоступный объект в объекте $scope
?
Спасибо,
Возможный дубликат [Каковы нюансы объема прототипа/прототипного наследования в AngularJS?] (Http://stackoverflow.com/questions/14049480/what-are-the-nuances-of-scope-prototypal-prototypical- inheritance-in-angularjs) –
$ scope - это ручка этого черного ящика. – harrrrrrry
Не нужно вводить частные методы в область действия. Отодвиньте их в службу, доступную где угодно – charlietfl