gpt4 book ai didi

angularjs - 如何为 2 个不同的 View 重用一个 Controller ?

转载 作者:行者123 更新时间:2023-12-02 19:50:16 25 4
gpt4 key购买 nike

我定义了一个 Controller ,并将其应用到 2 个有微小差异的 View 。

Angular 代码:

app.controller('MyCtrl', function($scope) {
$scope.canSave = false;
$scope.demo = {
files : [{
filename: 'aaa.html',
source: '<div>aaa</div>'
}, {
filename: 'bbb.html',
source: '<div>bbb</div>'
}]
}
$scope.newFile = function(file) {
$scope.demo.files.push(file);
}
$scope.$watch("demo.files", function(val) {
$scope.canSave = true;
}, true);
});

查看1:

<div ng-controller="MyCtrl"></div>

查看2:

<div ng-controller="MyCtrl"></div>

示例代码很简单,但是我的实际项目中有很多代码和逻辑。

View 1 和 View 2 具有几乎相同的功能,只有一些差异,但我确实需要在 Controller 中为每个 View 编写一些代码。

我不想为它们创建 2 个不同的 Controller ,因为它们具有大部分相同的逻辑。我不想将逻辑移动到服务中以在两个 Controller 之间共享它,因为该逻辑对于服务来说并不常见。

还有其他办法吗?

最佳答案

在给定的条件下我可能会做类似的事情

function MyCommonCtrl(type){
return function($scope, $http) {
$scope.x = 5;

if(type = 't1'){
$scope.domore = function(){
}
}

....
....
}
}

angular.module('ng').controller('Type1Ctrl', ['$scope', '$http', MyCommonCtrl('t1')]);
angular.module('ng').controller('Type2Ctrl', ['$scope', '$http', MyCommonCtrl('t2')]);

然后

<div ng-controller="Type1Ctrl"></div>

<div ng-controller="Type2Ctrl"></div>

关于angularjs - 如何为 2 个不同的 View 重用一个 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15618213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com