首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨模板的角度范围混淆

跨模板的角度范围混淆
EN

Stack Overflow用户
提问于 2015-12-01 03:18:34
回答 1查看 51关注 0票数 1

我最近开始使用角度和离子,听起来好像我遗漏了一些关于范围的基本内容,这应该是显而易见的,但我不明白这是什么。

我有两个离子模板/页。相应的状态属于同一个控制器,并且都显示一个列表。这些状态定义如下:

代码语言:javascript
复制
        .state('app.group', {
              url: '/group',
              views: {
                'menuContent':{
                    templateUrl: 'templates/group.html',
                    controller: 'GroupController',                      
                }
              },
              onEnter: function($){
                  console.log("Entered Group State");
              }
        })            
        .state('app.search', {
              url: '/pickGroup',
              views: {
                'menuContent':{
                    templateUrl: 'templates/groups/pickGroup.html',
                    controller: 'GroupController'                    }
              },
              onEnter: function(){
                  console.log("Entered Pick Group State");
              }
        }) 

第一个模板是

代码语言:javascript
复制
<ion-view title="My Groups">
    <ion-nav-buttons side="left">
        <button menu-toggle="left" class="button button-icon icon ion-navicon"></button>
    </ion-nav-buttons> 
    <ion-nav-buttons side="right">
        <button class="right button button-icon icon ion-plus" ng-click="pickGroup()"></button>
    </ion-nav-buttons> 
    <ion-content>
        <div class="list card">
            <span>My Group Names</span>
            <div ng-repeat="item in list" class="item">
                {{item.name}}
            </div>
        </div>
    </ion-content>
</ion-view>

第二个模板是

代码语言:javascript
复制
<ion-view title="Pick Groups">
    <ion-nav-buttons side="secondary">
        <button class="right button button-positive" ng-click="gotoCreateGroup()">Create Group</button>
    </ion-nav-buttons>
    <ion-content has-header="true">
        <span>In Pick Group</span>
        <div class="list card">
            <span>Groups In My Viscinity </span>
            <input type="text" ng-model="searchTxt.name" placeholder="Enter Group Name to Search">
            <div ng-repeat="item in list | filter:searchTxt" class="item">
                {{item.name}}
            </div>
        </div>
    </ion-content>
</ion-view>

控制器有以下代码

代码语言:javascript
复制
$scope.list = [
  {name:"G1-1"},
  {name:"G1-2"},
  {name:"G1-3"}
  ];
$scope.pickGroup = function(){
  $scope.list = [ {name:"G2-1"},
  {name:"G2-2"},
  {name:"G2-3"}
  ];
  $location.path("/app/pickGroup");
  console.log('PickGroup called');
} 

当第一个模板加载时,G1组将按预期显示。当我单击第一个模板中的按钮,该按钮调用pickGroup转到带有更新组的第二个模板时,G2组会在转换之前替换模板一号中的G1组,而第二个模板会显示出来,但会显示为G1组。当我通过back按钮返回第一个模板时,G2组就在那里了。

我原以为G2组也会出现在第二个模板中,因为我正在更新泡菜组函数中的$scope.list,但出于某种原因,它们没有出现。听起来我还不完全理解这里的范围。

感谢你帮助我更好地理解这一点。

谢谢,桑杰。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-01 03:33:44

当你切换到状态‘app.earch’时,角将重新创建一个控制器实例,您定义的范围是新的,因此无法获得状态'app.group‘中包含的列表数据。

如果你想共享数据,你可以使用‘服务’。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34011996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档