Angular - 根据条件导航到路由或调用控制器功能

时间:2016-09-02 20:23:14

标签: javascript angularjs ionic-framework

我在Ionic应用程序中显示文档列表。当用户点击文档并且文档扩展名不以.autocad结尾时,我需要在Cordova InAppBrowser中打开文档。但是,如果扩展名是.autocad,我需要路由到查看器状态(第三方查看器将加载文件)。

这是在html模板中创建文档列表的方式

</div>
<ion-scroll direction="y" style="{{documentListScrollHeight}}">
  <ion-list ion-list can-swipe="true" show-delete="false">
    <ion-item
              ng-repeat="(docName, format) in folder.Documents"
              class="item item-thumbnail-left" on-tap="openDocInAppBrowser(docName, format)">
      <div class="row">
        <h3>{{docName}}</h3>
      </div>
      <div class="col">
        <h4 style="color: #4b4d4e">File Type: {{format}}</h4>
      </div>
      </div>
    </ion-item>
  </ion-list>
</ion-scroll>
</div>

当用户点击文档(比如PDF)时,它现在调用控制器中的一个函数,该函数在Cordova InAppBrowser中打开文档。此功能正常。

我需要在里面点击一个支票,这样如果格式为.autocad,则转而跳转到查看器状态。像

这样的东西
on-tap="if(format != 'autocad' {openDocInAppBrowser(docName, format)} else { $state.go('viewer', {docName: docName, format: format })})

在Angular中执行此操作的正确方法是什么?

以下是我的州定义方式

.state('viewer', {
  url: '/viewer',
  params: {
    docName: null,
    format: null
  },
  templateUrl: 'templates/viewer.html',
  controller: 'viewerCtrl'
})

1 个答案:

答案 0 :(得分:0)

您的代码是正确的。您可能希望将此代码合并到一个函数中,而不是编写代码       $ scope.check_format = function(docName,format){

if(format!=&#39; autocad&#39; {openDocInAppBrowser(docName,format)} else {$ state.go(&#39; viewer&#39;,{docName:docName,format:format}) }

} 所以在html代码中ontap = check_format(docName,format)