Angularjs 来自变量/属性的ui sref

Angularjs 来自变量/属性的ui sref,angularjs,angular-ui-router,ui-sref,Angularjs,Angular Ui Router,Ui Sref,我正在将我的SPA从ng路由转换为ui.router。这应该是一个快速的人之一 对于我的一些州,我已经定义了$rootScope.nextState和$rootScope.prevState属性(statename字符串),这样我就可以在导航栏上有上一个和下一个按钮/链接 我好像找不到正确的链接。我试过: <button ui-sref="{{prevState}}">Previous</button> <button ui-sref={{prevState}}&

我正在将我的SPA从ng路由转换为ui.router。这应该是一个快速的人之一

对于我的一些州,我已经定义了
$rootScope.nextState
$rootScope.prevState
属性(statename字符串),这样我就可以在导航栏上有上一个和下一个按钮/链接

我好像找不到正确的链接。我试过:

<button ui-sref="{{prevState}}">Previous</button>

<button ui-sref={{prevState}}>Previous</button>

<button ui-sref="{prevState}">Previous</button>

<button ui-sref="prevState">Previous</button>

<button ng-href="{{$state.href(prevState)}}">Previous</button>

<button ng-click="$state.go(prevState)">Previous</button>
上一个
以前的
以前的
以前的
以前的
以前的
以上所有内容均带有


下面是一个重现问题的示例。它在类似于的方法中使用resolve。这可能是问题的时间安排…

对于未来的读者,我同意@JB Nizet的建议

HTML


在这里工作很好:。发布一个plunkr重现了这个问题。谢谢,@JBNizet-show's it's mable(并教我正确的语法!)Plunker补充道。我已经设法让它几乎正常工作了:$状态未定义。一切都失败了,因为如果试图使用未定义的状态,ui sref将抛出。解析字段应该是返回内容的函数。不是字符串。但ui sref似乎不关注表达式的更改,因此,一旦显示“下一步”按钮,即使范围中的下一步更改,它也不会更改其目标位置。我认为您应该简单地使用ng click调用作用域的函数,该函数将以编程方式调用$state.go()。它使事情变得更容易。
<button ng-click="goPrevious()" ng-disabled="!previousState">Previous</button>
<button ng-click="goNext()" ng-disabled="!nextState">Next</button>
app.run( function($rootScope, $state) {

  $rootScope.$on('$stateChangeSuccess', function () {

    var previous = $state.$current.locals.globals.$prevState;
    var next = $state.$current.locals.globals.$nextState;

    $rootScope.previousState = previous;
    $rootScope.nextState = next;

    if (typeof previous !== 'undefined') {
        $rootScope.goPrevious = function() { $state.go(previous); };
    } else {
        $rootScope.goPrevious = function() { console.log ("No previous state found"); };
    }
    if (typeof next !== 'undefined') {
        $rootScope.goNext = function() { $state.go(next); };
    } else {
        $rootScope.goNext = function() { console.log ("No next state found"); };
    }

  });
});