如何告诉未来控制器对象将起作用

时间:2014-09-15 21:21:27

标签: angularjs href

我的问题是,我想通知未来控制器的对象将不得不处理。但是没有为每个对象创建一个不同的路径,因为它可能是很多,并且在路径中没有ID。但是,如何告诉控制器知道建筑物已被召唤。

HTML:

<ul>
    <li class="menu-nested" ng-repeat="building in faculty.buildings">
        <a href="#structure_department" title="">
            <span class="menu-item-parent text-menu-resol"> {{ building.name }}</span>
        </a>
   </li>
</ul>

JS:

.when("/structure_department", {
            templateUrl: "views/building.html",
            controller: "BuildingController"
})

我不知道,也许你已经做过类似的事了? 的问候,

1 个答案:

答案 0 :(得分:1)

如果我能正确理解你的问题,一个简单的方法就是使用服务。首先构建服务,然后将其注入您正在使用的控制器和您将使用的控制器。您需要做的就是设置服务使用的建筑物名称,然后在使用其他控制器时获取它。

创建您的服务:

angular.module('MyApp')
.service('DataService', function () {
    var buildingName = '';

    function getBuildingName() {
        return buildingName ;
    }

    function setBuildingName(buildingname) {
        buildingName = buildingname;
    }

    return {
        setBuildingName: setBuildingName,
        getBuildingName: getBuildingName,
      }
});

在您的控制器中:

angular.module('MyApp')
    .controller('buildingController', ['$scope', 'DataService',
        function buildingController($scope, DataService) {
 DataService.setBuildingName('buildingName');
}]);

angular.module('MyApp')
    .controller('futureController', ['$scope', 'DataService',
        function futureController($scope, DataService) {
$scope.buildingName = DataService.getBuildingName();
}]);

可以采取的另一种方式是通过路线参数。查看$ routeParams的角度文档,您可以在URL中传递它。只需将路由参数服务注入您的控制器,您就可以从URL中获取建筑物名称作为参数。