gpt4 book ai didi

AngularJS 工厂混合

转载 作者:行者123 更新时间:2023-12-04 00:36:20 26 4
gpt4 key购买 nike

我见过一些将方法作为混合宏添加到 AngularJS Controller 的示例。例如:

(function () {
var app = angular.module('angularjs-starter', []);

var ParentCtrl = function ($scope, $location) {
$scope.path = function () {
return $location.absUrl();
};
};

app.controller('ChildCtrl', function($scope, $injector) {
$injector.invoke(ParentCtrl, this, {$scope: $scope});
$scope.url = $scope.path();
});
})();

我希望能够将新方法作为“mixin”添加到工厂。我怎样才能做到这一点?不可能将 $scope 传递给工厂。

例如,以下内容不起作用:

var serv = angular.module('myModule', [])

serv.factory('myService', ['$scope', '$injector', function ($scope, $injector) {
...

最佳答案

您可以使用 angular.extend为此,它将所有源对象的属性复制到目标对象中。

例如:

(function () {
var app = angular.module('angularjs-starter', []);

app.factory('CalculatorFactory', function() {
return {
add: function(arg1, arg2) {
return arg1 + arg2;
}
}
});

app.controller('MainCtrl', function($scope, CalculatorFactory) {
angular.extend($scope, CalculatorFactory);

// $scope now has the `add() fn`
var result = $scope.add(1, 2);
});

})();

关于AngularJS 工厂混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23944737/

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