javascript - 在 AngularJS 中 Controller 和服务之间传递变量的混淆

标签 javascript angularjs

我刚开始学习 AngularJS。我知道这已被多次询问,但我就是不明白。在阅读此处的示例代码和在我的 IDE 中摆弄之间,我已经花了好几个小时了。

我有以下代码,它应该检索项目的部分键,然后将该键传递给使用 API 的服务,以提供基于该键填充类别的响应。单击分区表行时会发生这种情况。

HTML

<div ng-controller="menuController">
    <h1>AngularTest</h1>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
         <tbody>
            <tr ng-click="getSectionID($event)" ng-repeat-start="section in navSectionList" data-id="{{section.id}}">                    
                    <td>{{section.id}}</td>
                    <td>{{section.name}}</td>
            </tr>
            <tr ng-repeat-end="categories in navGetCategories">
                <td>{{categories.id}}</td>
                <td>{{categories.name}}</td>
            </tr>
        </tbody>
    </table>
</div>

导航 Controller

var navApp = angular.module('navApp', ['ngResource']);

navApp.controller('menuController', ['$scope', 'navSectionList', 'navGetCategories',
    function ($scope, navSectionList, navGetCategories) {
        $scope.navSectionList = navSectionList.query();
        $scope.getSectionID = function (event) {

            var sectionID = event.currentTarget.attributes["data-id"].value;
            $scope.sectionID = sectionID;
            //console.log($scope.sectionID);

            $scope.navGetCategories = navGetCategories.query(sectionID);
        };   
    }
]);

导航服务.js

navApp.factory('navSectionList', [
    '$resource', function ($resource) {
        return $resource('/api/navigation/section/list', {}, {
            query: { method: 'GET', params: {}, isArray: true }
        });
    }
]);

navApp.factory('navGetCategories', [
    '$resource', function ($resource) {

        return $resource('/api/navigation/category/' + sectionID, {}, {
            query: { method: 'GET', params: {}, isArray: true }        
        });
    }
]);

如何从 navController 获取值到 navService 以便它可以使用该值来查询 API?我觉得这应该是非常简单和基本的东西,但我现在要么缺乏 sleep ,要么缺乏智慧。请帮忙。

最佳答案

您需要将您的服务更改为如下内容:

navApp.factory('navGetCategories', ['$resource', function ($resource) {
    var service = {
        getResource: function(sectionID) {
            return $resource('/api/navigation/category/' + sectionID, {}, {
                query: { method: 'GET', params: {}, isArray: true }        
            });
        }
    }
    return service;
}]);

然后使用它会是这样的:

$scope.navGetCategories = navGetCategories
    .getResource(sectionID)
    .query();

关于javascript - 在 AngularJS 中 Controller 和服务之间传递变量的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46229634/

相关文章:

javascript - AngularJS:翻译服务调用返回不可用的$$state对象

javascript - 使用 JSONP 时如何捕获 jQuery $.getJSON(或数据类型设置为 'jsonp' 的 $.ajax)错误?

javascript - 我可以通过 Prop 传递要使用的对象名称吗?

javascript - Jquery - 拖动时禁用选择

javascript/angularjs - 淡出

javascript - 在事件内使用 $scope - 谷歌地图 api

javascript - Node Firebird 顺序选择不起作用

javascript - 如何验证只有一个字符的电话号码

带有 System.Web.Routing 的 AngularJS

javascript - Angular 服务问题——在包含 promise 的服务中返回一个数组