根据在先前视图中选择的列表项动态填充HTML模板

时间:2016-03-06 03:20:41

标签: javascript html angularjs ionic-framework

我有一个页面:/ tracks这是一个项目列表,每个项目附有一个ngclick和href项目。

href根据从ngclick中的函数传递的值链接到特定项的视图。 href视图应自动填充,但不起作用。相关代码:

轨迹视图(附加轨道控制器):

<ion-item ng-repeat="item in vm.tracks" ng-click="vm.setTrack(item)" href="#/app/track">
{{item.name}}
</ion-item>"

跟踪视图(附加跟踪控制器):

<ion-content>
    {{vm.currentTrack.name}}
    {{vm.currentTrack.metadata.desc}}
    {{vm.currentTrack.metadata.author}}
    {{vm.currentTrack.metadata.date}}
</ion-content>

跟踪控制器:

    /** @fires $rootScope.TrackChange */
    function setTrack(track){
        vm.currentTrack = track;
       $rootScope.$emit('TrackChange', track);
    }

跟踪控制器:

    /** @listens $rootScope.TrackChange */
    $rootScope.$on('TrackChange', function(event, data) {
        vm.currentTrack = data;
    });

如何使此活动有效?在侦听器中放置console.log命令会显示正在更新vm.currentTrack,但每次单击时触发新事件时,都会有一个额外的vm.currentTrack打印 - 事件未被清除。由于某种原因,Track视图在第二次单击时打印出vm.currentTrack。谁能指出我正确的方向?我应该做些不同的事吗?

1 个答案:

答案 0 :(得分:2)

我建议您将currentTrack数据存储在服务中,并将其注入tracktracks控制器中,或将其存储在track的父控制器中。 1}}和tracks,因为您正在切换状态。它无法正常工作的原因是,只有在控制器创建控制器后才会分配您编写的侦听器。但是即使在创建控制器之前,事件也会被触发。

你开火 - &gt;开关状态 - &gt;创建新控制器 - &gt;订阅...你认为为时已晚吗? :)

专业提示!在角度中使用事件表明您的方向错误。