【问题标题】:Can I make my angular-ui-router stateProvider definition shorter?我可以让我的 angular-ui-router stateProvider 定义更短吗?
【发布时间】:2014-03-02 00:46:32
【问题描述】:

我正在使用 angular-ui-router,这通常很棒,但是我定义 stateProvider 的代码变得非常重复,例如

.state('home', {
  url: "/home",
  templateUrl: "home.html"
})
.state('products', {
  url: "/products",
  templateUrl: "products.html"
})
.state('suppliers', {
  url: "/suppliers",
  templateUrl: "suppliers.html"
})

有没有办法告诉它每个州都有一个与州名匹配的 URL 和模板?

【问题讨论】:

    标签: angularjs angular-ui-router


    【解决方案1】:

    编写一个函数。

    var myState = function($stateProvider, name) {
        $stateProvider.state(name, {
            url: '/' + name,
            templateUrl: name + '.html'
        })
    }
    

    那么你可以这样使用它:

    myState($stateProvider, 'home');
    myState($stateProvider, 'products');
    myState($stateProvider, 'suppliers');
    

    如果您愿意,也可以扩展 $stateProvider 对象:

    $stateProvider.myState = function(name) {
        return this.state(name, {
            url: '/' + name,
            templateUrl: name + '.html'
        })
    }
    

    像这样使用它:

    $stateProvider
        .myState('home')
        .myState('products')
        .myState('suppliers');
    

    【讨论】:

    • 工作愉快!尽管 $stateProvider.prototype.myState 导致“TypeError: Cannot set property 'parentState' of undefined”(在 Chrome 中)但只是做 $stateProvider.myState 工作正常。不知道为什么会这样。无论如何,您的方法非常简洁,并且可以节省大量代码 :-)
    • prototype 是我的错。感谢您指出这一点,我修复了我的帖子。很高兴它有帮助!
    猜你喜欢
    • 2014-11-28
    • 2016-01-02
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 2010-12-31
    • 1970-01-01
    相关资源
    最近更新 更多