gpt4 book ai didi

javascript - 出厂时的 Angular 访问模块范围

转载 作者:行者123 更新时间:2023-11-28 00:39:41 25 4
gpt4 key购买 nike

我对 Angular 还很陌生。

我想要的是,当从外部调用工厂方法时,该方法应该更新模块范围数据,如下所示:

fileList.controller('FileListController', ['$scope', function ($scope) {
$scope.device = {};
$scope.files = [];
$scope.isDeviceDefined = function () {
return typeof $scope.device === 'object' && $scope.device !== null && $scope.device.hasOwnProperty('label');
};
}]);

fileList.factory('deviceFiles', ['$scope', 'files', function ($scope, files) {
return {
setFilesForDevice: function (device) {
$scope.device = device;
$scope.files = files.getFilesFromDevice(device.label);
}
};
}]);

但它说,$scope 是一个未知的提供者。还有其他方法可以更新模块数据吗? setFilesForDevice 是通过单击不同 Controller 模板内的按钮来调用的方法。

最佳答案

您需要在这里采取一些不同的方法。首先,您通过 $routeParams.device 在 Controller 中获取设备 ID。

然后您创建一个可注入(inject) FileListController 的服务并提供有关文件的信息,即

fileList.controller('FileListController', ['$scope', '$routeParams', 'deviceFilesService', function ($scope, $routeParams, deviceFilesService) {
$scope.device = $routeParams.device;
$scope.files = deviceFilesService.getFilesForDevice($routeParams.device);
}]);

fileList.service('deviceFilesService', ['files', function (files) {
this.getFilesForDevice = function (device) {
// Code to look up list of files the the device
};
}]);

关于javascript - 出厂时的 Angular 访问模块范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28088588/

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