你能在AngularJS中调用伪状态变化吗?

时间:2018-06-05 17:31:27

标签: javascript angularjs angularjs-directive

在控制器功能中说,像这样:

$scope.fakeChangeState = function() {
    $state.go('stay right here and do nothing');
}

然后在按下按钮时调用它:

<button ng-click="fakeChangeState()">click</button>

这样的事情可能吗?

当点击网站上的某些按钮时,我想激活一个指令。该指令使用“$ stateChangeStart”激活。

当使用导航栏导航到另一个页面时,该指令激活得很好。但是,有些按钮不是导航的一部分,只会更改视图(即,它们会在页面上编辑内容而不会在单击时更改状态)。

如何在不改变状态的情况下激活状态更改指令?

2 个答案:

答案 0 :(得分:0)

您可以使用$stateChangeStart事件来阻止导航到另一个状态(即默认状态)。我不确定你的指令何时触发,所以这可能为你的保存指令触发太早。

$rootScope.$on('$stateChangeStart',
function(event, toState, toParams, fromState, fromParams){
    event.preventDefault();
    // transitionTo() promise will be rejected with
    // a 'transition prevented' error
})

答案 1 :(得分:0)

通过复制指令中的代码并将其放入按下按钮时激活的控制器代码来解决这个问题。显然我不善于解释问题所在,但只是复制代码解决了问题。这使得指令根本不必运行。