AngularJS - 从服务调用控制器功能

 林振萍俊諭 发布于 2023-02-10 08:33

我对Angular非常环保,我甚至不确定我是否正在构建一个正确的搜索.整个指令和服务术语仍然让我感到困惑,但这不是我的问题.

我从前到后读过这篇优秀的文章系列:http://www.ng-newsletter.com/posts/beginner2expert-how_to_start.html

这就是为什么我在我的应用程序中的这一点.为什么我知道我的问题更多地涉及服务和控制器之间的关系.而不是语法相关.

所以这里是应用程序的概述:

我有一个控制器.这样就可以使用对PHP文件的AJAX调用为用户获取大量的场数据,并使用它自己的$ scope在屏幕上显示它.

var masterApp = angular.module('masterApp', ['myFilters','commonControls']);

masterApp.controller('MasterCtrl', ['$scope','$http', '$filter', 'commonFarmSelector', 
    function($scope, $http, $filter, commonFarmSelector){

        ...

        $scope.masterCtrl.loadFarmData = function(farmId) {
            var postdata = {
               "farmId":farmId
            };

            $http.post('/service/farmproduction', postdata).success(function (data) {
                // Do stuff with the $scope using data
            }
        }

        $scope.masterCtrl.loadFarms();
}

你会看到我正在注入一个名为"commonControls"的东西.这是我创建的一个模块,用于保存将由多个控制器重用的控件.在这种情况下,下拉字段包含用户有权访问的服务器场列表(也通过AJAX调用获得):

var commonControlsApp = angular.module('commonControls', []);

commonControlsApp.controller('farmSelectorCtrl', ['$scope', '$http',function($scope, $http) {

    $scope.farmSelectorCtrl ={}

    // Change entire farm view when a different farm is selected
    $scope.farmSelectorCtrl.switchUserFarm = function() {
        var farmId = $scope.farmSelectorCtrl.selectedUserFarm;
        $scope.masterCtrl.loadFarms(farmId); // !!! Direct link to masterCtrl
    };

    // Get a list of the user's farms
    $http.post('/service/userfarms').success(function (data) {
        $scope.farmSelectorCtrl.userFarms = data.getFarmsPerUserResult.farmIds;
    });

}]);

这很好用.但正如您所看到的,farmSelector直接链接到masterCtrl.并且该loadFarmData函数的行为特定于该控制器.换句话说,它只会执行适用于该页面的操作.

问题是,这个farmSelector将用于其他页面.并且每个页面的更改事件的精确行为将是不同的.所以我正在努力找出这种行为应该存在的地方.以及如何使用farmSelector将其调用依赖于控制器.

我上面链接的文章表明这​​个farmSelector应该在一个服务中,所以它可以在别处重用.但我仍然对如何在触发事件时为通用服务提供特定操作感到困惑.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有