我想知道在控制器之间共享指令 的好方法是什么。 我有即两个指令在不同的控制器 使用不同的配置我使用像想到 先觉得:angularjs共享控制器之间的数据配置
//html
<body data-ng-controller="MainCtrl">
<div class="container">
<div data-ui-view></div>
</div>
</body>
//js
.controller('MainCtrl', function ($scope,$upload) {
/*File upload config*/
$scope.onFileSelect = function($files) {
for (var i = 0; i < $files.length; i++) {
var file = $files[i];
$scope.upload = $upload.upload({
url: 'server/upload/url',
method: 'POST',
data: {myObj: $scope.myModelObj},
file: file,
}).progress(function(evt) {
console.log('percent: ' + parseInt(100.0 * evt.loaded/evt.total));
}).success(function(data, status, headers, config) {
console.log(data);
});
}
};
/* Datepicker config */
$scope.showWeeks = true;
$scope.minDate = new Date();
$scope.open = function($event) {
$event.preventDefault();
$event.stopPropagation();
$scope.opened = true;
};
$scope.dateOptions = {
'year-format': "'yy'",
'starting-day': 1
};
$scope.format = 'MMM d, yyyy';
})
.controller('IndexCtrl', function ($scope) {
})
这样我可以使用所有的功能在我的孩子控制器 但我不不太喜欢碰撞问题。 因为你不能使用服务(不能使用在服务$范围)的其他替代品可能会作出其他指令或把代码在运行块 但它使用父控制器等等 什么做的完全一样你想想吗?
UPDATE
您对这种方法有什么看法?
//outside of angular stauff
function MyTest(){
this.testScope = function(){
console.log('It works');
}
}
//inside a controller
$scope.ns = new MyTest();
//in the view
<p ng-click="ns.testScope()">ppp</p>
RIUPDATE 这似乎是最好的选择:)
MyTest.call($scope);
这就是我正在寻找的感谢:) – Whisher
第二想法如何做到这一点,而不使用全局定义的控制器定义? – Whisher
在示例回购中,它们是全局定义的https://github.com/bparvizi/angular-js-controller-mixins。但是他们没有理由必须考虑如何将控制器与browserify结合使用。但是,基本控制器必须定义在:http://ethanway.com/angular-and-browserify/。 mixin的要点。 –