繁体   English   中英

根据上一个视图中选择的列表项动态填充HTML模板

[英]Dynamically fill HTML template based on the list item selected in previous view

我有一个页面:/ 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都会有其他打印输出—这些事件不会被清除。 跟踪视图仅出于某种原因在第二次单击时打印出vm.currentTrack。 谁能指出我正确的方向? 我应该做些不同的事情吗?

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

您触发->切换状态->创建新控制器->订阅...您认为为时已晚吗? :)

专家提示! 在角度上使用事件表明您走错了方向。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM