Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止同级状态控制器刷新?_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript 如何防止同级状态控制器刷新?

Javascript 如何防止同级状态控制器刷新?,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我有一个主仪表板父状态和两个子状态标记和标记 当我点击tickers中的按钮时,只有标签状态应该刷新。目前它们都刷新 ^onInit tickersController的console.log只能运行一次。但是,每次单击标记器时都应运行标记控制器 如果不将视图移动到父状态之一,则无法阻止视图刷新。以下是应该起作用的已更改状态 var标记={ 名称:“dash.tags”, url:“?股票代码”, 观点:{ 'tagsList@dash': { templateUrl:'tags li

我有一个主
仪表板
父状态和两个子状态
标记
标记

当我点击
tickers
中的按钮时,只有
标签
状态应该刷新。目前它们都刷新

^onInit tickersController的
console.log只能运行一次。但是,每次单击标记器时都应运行标记控制器


如果不将视图移动到父状态之一,则无法阻止视图刷新。以下是应该起作用的已更改状态

var标记={
名称:“dash.tags”,
url:“?股票代码”,
观点:{
'tagsList@dash': {
templateUrl:'tags list.html',
控制器:“标记控制器”
}
}
}
变量破折号={
名称:'破折号',
url:“/dash”,
摘要:没错,
观点:{
'':{templateUrl:'dashboard.html'},
'tickersList@dash': {
templateUrl:'tickers list.html',
控制器:“tickersController”
}
}
};

如果不将视图移动到父状态之一,则无法阻止视图刷新。以下是应该起作用的已更改状态

var标记={
名称:“dash.tags”,
url:“?股票代码”,
观点:{
'tagsList@dash': {
templateUrl:'tags list.html',
控制器:“标记控制器”
}
}
}
变量破折号={
名称:'破折号',
url:“/dash”,
摘要:没错,
观点:{
'':{templateUrl:'dashboard.html'},
'tickersList@dash': {
templateUrl:'tickers list.html',
控制器:“tickersController”
}
}

};我将您的plunker编辑为在不刷新状态的情况下工作:

广播:

    $scope.changeScotchState = function(theTicker) {
   $rootScope.$broadcast('newData',  theTicker);
};
及(港币):

   $scope.$on('newData', function(event, ticker){

      $scope.tags = getList(ticker);
      $scope.ticker = ticker;
    })

是最重要的部分和变化

我编辑了您的plunker,使其在不刷新状态的情况下工作:

广播:

    $scope.changeScotchState = function(theTicker) {
   $rootScope.$broadcast('newData',  theTicker);
};
及(港币):

   $scope.$on('newData', function(event, ticker){

      $scope.tags = getList(ticker);
      $scope.ticker = ticker;
    })


是最重要的部分和变化

可能是国家改变的结果吗?那么会影响到tickets视图吗?是的,您如何避免更改tickets视图呢?或者其他孩子。基本上,我只希望仪表板的子级在其所需的特定状态变量发生更改时被刷新。实际上,我将继续添加第三个控制器。更新url:“/tags”,而不是父视图?
ticker
参数在
dash
上声明。无论何时
ticker
参数更改,都会重新加载
dash
状态和所有子项。如果可以的话,将
ticker
参数移动到子状态。是否可以通过状态更改?那么会影响到tickets视图吗?是的,您如何避免更改tickets视图呢?或者其他孩子。基本上,我只希望仪表板的子级在其所需的特定状态变量发生更改时被刷新。实际上,我将继续添加第三个控制器。更新url:“/tags”,而不是父视图?
ticker
参数在
dash
上声明。无论何时
ticker
参数更改,都会重新加载
dash
状态和所有子项。如果可以,将
ticker
参数移动到子状态。谢谢,但是在您的示例中,标签列表没有显示。实际上,我在这里分叉了一个新的plnkr,每个状态对象都被分解:更新了plunk。我忘了在父状态上添加
abstract:true
。嘿,所以我尝试删除ui sref,这样我就可以使用
$state。转到Javascript内部,我得到一个错误
错误:无法转换到抽象状态“破折号”
,介意看一下这里吗?抽象状态的定义是不能切换到它。您必须切换到相应的子状态-
state.go('dash.tags',{ticker:'something'})
谢谢,但是在您的示例中,没有显示标记列表。实际上,我在这里分叉了一个新的plnkr,每个状态对象都被分解:更新了plunk。我忘了在父状态上添加
abstract:true
。嘿,所以我尝试删除ui sref,这样我就可以使用
$state。转到Javascript内部,我得到一个错误
错误:无法转换到抽象状态“破折号”
,介意看一下这里吗?抽象状态的定义是不能切换到它。您必须切换到相应的子状态-
state.go('dash.tags',{ticker:'something'})
谢谢!您的代码也可以作为STEPAN使用。。。但奇怪的是,我不知道您在哪里使用了上述事件?在
tickercontroller
tagscocontroller
中。首先,我更新了
changeScotchState
函数,然后在tagsCtrl中执行操作。由于方法非常不同,两种代码都可以工作。在构建基于组件的应用程序时,我经常使用$broadcast和emit。组件不直接通信,所以这是必要的。谢谢!您的代码也可以作为STEPAN使用。。。但奇怪的是,我不知道您在哪里使用了上述事件?在
tickercontroller
tagscocontroller
中。首先,我更新了
changeScotchState
函数,然后在tagsCtrl中执行操作。由于方法非常不同,两种代码都可以工作。在构建基于组件的应用程序时,我经常使用$broadcast和emit。组件不直接通信,因此这是必要的。