【问题标题】:Angular-meteor Properly load relationshipsAngular-metor 正确加载关系
【发布时间】:2015-07-07 10:28:40
【问题描述】:

我正在尝试在 Angular-meteor 上的 2 个集合之间建立关系。

areas - top in the structure
city - belongs to an area

在这个post 上,它使用 Iron Router 在加载控制器之前加入字段。这似乎是一个不错的解决方案,因为如果 2 个城市属于同一区域,它不会带来超过一次的区域。 如何使用 Angular 的路由器进行两者之间的映射?

我已经尝试过publish-composite,但似乎对于每个城市,它都会对其区域进行查询。

有没有更 Angular 的方法?

【问题讨论】:

    标签: angularjs meteor relationship angular-meteor


    【解决方案1】:

    我所做的是:

    • 创建了包含城市和地区的发布。仅使用城市区域过滤区域
    • 在我的控制器上,我订阅了这个发布者并获得了两个集合
    • 创建了一个过滤器,用于在屏幕上打印信息,它将城市中的区域 ID 与我的区域数组中的正确区域 ID 匹配,并返回其名称。

    代码类似于:

    // server side
    Meteor.publish('citiesAndAreas', function(args) {
    var cities = Cities.find({}, args);
    
    // then extract those areas ids
    var areaIds = cities.map(function(p) { return p.area_id });
    
    // then return an array containing both the cities, and their corresponding areas
        return [
            cities,
            Areas.find({_id: {$in: areaIds}})
        ];
    });
    
    //client controller
    $scope.modelItems = $meteor.collection(Cities).subscribe('citiesAndAreas');
    $scope.areas = $meteor.collection(Areas);
    
    // filter
    angular.module("XXXX").filter('areaCity', function () {
        return function (area, city) {
            if (!city)
                return '';
            var name =  _.findWhere(area, {_id: city.area_id});
            if (name) {
                return name.title;
            } else {
                return '';
            }
        }
    });
    
    // on the html
    <md-list-item ng-repeat="item in modelItems">
                    {{item.title}}<br/>
                    {{areas | areaProfession:item}}
                    <md-button ng-click="remove(item)" aria-label="remove"><md-icon md-svg-icon="content:ic_clear_24px"></md-icon></md-button>
    </md-list-item>
    

    【讨论】:

    猜你喜欢
    • 2019-07-14
    • 2017-05-16
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    相关资源
    最近更新 更多