Angularjs:在第二次访问页面

时间:2015-10-20 11:51:05

标签: angularjs coffeescript angular-ui-router angularjs-ng-repeat

我是angularjs和coffeescript的新手。我在刷新视图时遇到了一个问题。

这是情景:

我有两种类型的页面:

  1. 列出的混合车辆清单。在这个页面上,我有选项"添加到fourwheeler"并且"添加到twowheeler"。
  2. 第二页包含两个标签1. Twowheeler 2. Fourwheeler
  3. 现在首次登录app后,我访问第1页并选择一辆车添加到fourwheeler然后转到第2页并选择我最近添加车辆的四轮车标签,但现在如果我再次转到第1页 - >选择四轮车并检查第2页四轮车标签然后我找不到该项目。

    当我在控制台中检查时,我发现数据中的新项目由API返回但在视图中丢失。所以我得出结论认为观点并不令人耳目一新。那么每次访问此页面时如何刷新视图?

    我想我必须把$ scope。$ apply()。但我不知道我应该在哪里使用这个?

    代码:

    州档案:

    angular.module('states.vehicles', [])
      .config ($stateProvider) ->
        $stateProvider
          .state "app.vehicles",
            url:         "/vehicles/:itemType"
            views: {
              app: {
                controller:  'VehiclesCtrl'
                templateUrl: "templates/vehicles/vehicles.jade"
              }
            }
            abstract:            true
            data:
              isRoot:            true
              showBannerAd:      true
              tabs:
                twowheeler:
                  name: 'Twowheeler'
                  direction: 'app.vehicles.items({itemType: "twowheeler"})'
                  id: 'twowheeler'
                  icon: 'icon-twowheeler'
                fourwheeler:
                  name: 'Fourwheeler'
                  direction: 'app.vehicles.items({itemType: "fourwheeler"})'
                  id: 'fourwheeler'
                  icon: 'icon-fourwheeler'
    
          .state 'app.vehicles.items',
            url:         ''
            views: {
              tabs: {
                templateUrl: 'templates/vehicles/vehicles.items.jade'
                controller:  'vehiclesItemsCtrl'
              }
            }
            resolve:
              items: ($stateParams, Vehicle) ->
                offset = $stateParams.queryOffset || 0
                Vehicle.query
                  type:   $stateParams.itemType
                  count:  10
                  offset: offset
            data:
              isTab: true
              loadingTransition: true
    

    控制器文件:

    class VehiclesItemsCtrl extends BaseCtrl
      @register 'VehiclesItemsCtrl'
    
      @inject '$scope', '$state', '$stateParams', 'Vehicle'
    
      initialize: ->
        @$scope.itemType = @$stateParams.itemType
        @$scope.items    = []
        @$scope.query    = @_vehicleQuery
    
      # Private
    
      _vehicleQuery: =>
        @$stateParams.queryOffset = @$scope.items.length
        @$state.current.resolve.items(@$stateParams, @Vehicle)
    

    查看文件:

    ion-view(title='Vehicles')
      ion-content.v-offset-nav
        section(ng-switch='itemType')
          div(ng-switch-when='twowheeler')
            section(ng-repeat="twowheeler in items", ui-sref='app.twowheeler({twowheelerId: twowheeler.twowheeler_id})')
              a.row.list-item.list-colors
                h3 {{twowheeler.name}}
          div(ng-switch-when='fourwheeler')
            section(ng-repeat="fourwheeler in items", ui-sref='app.fourwheeler({fourwheelerId: fourwheeler.fourwheeler_id})')
              a.row.list-item.list-colors
                h3 {{fourwheeler.name}}
          nfinite-scroll(items='items', query='query')
    

    请让我知道我要改变什么?

1 个答案:

答案 0 :(得分:0)

ion-view(cache-view="false", title='Vehicles')

我在ion-view标签中添加了 cache-view =“false”,它可以完美地运行。

相关问题