angular-meteor 1.3 $ meteor.object新方法

时间:2015-12-10 21:30:18

标签: angularjs meteor angular-meteor

我可能会遗漏一些东西,但是我尝试在我的变量modifTrib中从我的mongo集合Tribunaux中反应性地访问单个文档而没有$ stateParams。当我点击按钮时,我得到了tribunalId字段。所以在我点击我的变量在我的控制器中为null之前。

这是我做的:

angular
    .module('app')
    .controller('tribunauxController', tribunauxController);

tribunauxController.$inject = ['$scope', '$reactive', '$mdDialog'];

function tribunauxController($scope, $reactive, $mdDialog)
{
    $reactive(this).attach($scope);
    var vm = this;
    vm.TribunalModify = TribunalModify;
    vm.tribunalId = null;


     vm.helpers({
        tribunaux: () => {
            return Tribunaux.find({});
        }
    });

    vm.helpers({
        modifTrib () {
            return Tribunaux.findOne(tribunalId);
        }
    });


    function TribunalModify(tribId){
        vm.tribunalId = tribId;
    }                                                                    }

我无法让它发挥作用。

需要一点帮助谢谢!

更新:这是我的HTML的有趣部分

<md-list-item class="md-2-line" ng-click="vm.TribunalModify(tribunal._id)"
                              ng-repeat="tribunal in vm.tribunaux">
        <div class="md-list-item-text">
            <h3>Tribunal d'instance de {{tribunal.label}}</h3>
            <p>{{tribunal.address}}</p>
        </div>
</md-list-item>

1 个答案:

答案 0 :(得分:0)

你可以改变两件事:

  1. <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"> <title>Garbage and Recycling</title> <link rel="stylesheet" href="https://js.arcgis.com/3.15/dijit/themes/claro/claro.css" /> <link rel="stylesheet" href="https://js.arcgis.com/3.15/esri/css/esri.css" /> <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open Sans"> <style> html, body { height:100%; width:100%; margin:0; padding:0; margin:0; font-family: "Open Sans"; } #search{ display:block; background-color: white; position: absolute !important; top: 20px; right: 20px; } #container{ width: 100%; position: absolute; bottom:0; background-color:rgba(0,0,0,0.8); color: white; } #instructionDiv{ font-style:italic; } #zoneDiv{ font-weight: bold; padding-bottom:0; } #linkDiv{ padding-top:0; } #garDiv{ padding-bottom: 0; } #recDiv{ padding-top:0; } #map { padding:0; } .nav { padding: 5px 10px; background: #4479BA; color: #FFF; border-radius: 5px; border: solid 1px #20538D; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4); -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 1px rgba(0, 0, 0, 0.2); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 1px rgba(0, 0, 0, 0.2); } </style> <script src="https://js.arcgis.com/3.15/"></script> <script> require([ "dojo/on", "dojo/_base/connect", "dojo/dom", "dijit/registry", "dojo/dom-construct", "dojo/parser", "dijit/layout/BorderContainer", "dijit/layout/ContentPane", "esri/map", "esri/arcgis/utils", "esri/domUtils", "esri/dijit/Popup", "esri/dijit/Search" ], function( on, connect, dom, registry, domConstruct, parser, BorderContainer, ContentPane, Map, arcgisUtils, domUtils, Popup, Search ) { //parser.parse(); //Create a map based on an ArcGIS Online web map id arcgisUtils.createMap("5cdc921a8e2d4eb08ab64a63d1c46e23", "map").then (function(response){ var map = response.map; //set infoWindow to false map.infoWindow.set("popupWindow", false); initializeBottomBar(map); //create Search var search = new Search({map:map, enableInfoWindow: true, zoomScale: 1000}, "search"); search.startup(); }); //initialize Bottom Bar (bottom) function initializeBottomBar(map){ var popup = map.infoWindow; //when the selection changes, update the info bar connect.connect(popup, "onSelectionChange", function(){ displayContent(popup.getSelectedFeature()); }); connect.connect(popup, "onSetFeatures", function(){ displayContent(popup.getSelectedFeature()); }); } function displayContent(feature){ if(feature){ var content = feature.getContent(); registry.byId("zoneDiv").set("content", content); } } }); </script> </head> <body class="claro"> <div id="map" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'" style="width: 100%; height: 100%"> </div> <div id="search" data-dojo-type="dijit/layout/ContentPane"></div> <div id="container" data-dojo-type="dijit/layout/ContentPane"> <div id="instructionDiv" data-dojo-type="dijit/layout/ContentPane">Click a collection zone on the map for more details.</div> <div id="zoneDiv" data-dojo-type="dijit/layout/ContentPane"></div> <div id="linkDiv" data-dojo-type="dijit/layout/ContentPane"></div> <div id="descDiv" data-dojo-type="dijit/layout/ContentPane"></div> <div id="garDiv" data-dojo-type="dijit/layout/ContentPane"></div> <div id="recDiv" data-dojo-type="dijit/layout/ContentPane"></div> </div> </body> </html> 合并到一个帮助程序定义中(我认为它看起来更好)
  2. helpers必须具有反应性才能重新运行帮助程序。这样做的方法很少(我们只是在这里讨论它:https://github.com/Urigo/angular-meteor/issues/955)但是现在,最简单的方法就是使用tribunalId

    返回Tribunaux.findOne(getReactively(“tribunalId”));