2017-09-29 8 views
1

私の単純化しすぎApp.configファイルは、()があります。

私はそのURLをロードするには、 "/ newCategories" と UI-農奴リンクを使用することができます。これにより
$stateProvider. 
    state("/", { 
    url: "/", 
    templateUrl: "main.html" 
}). 
state("/newCategories", { 
    url: "/categories/new", 
    templateUrl: "/views/new_categories.html", 
    controller: "newCategoriesCtrl" 
}). 
state("/categoryPages", { 
url: "/categories/:address", 
templateUrl: "/views/categories.html", 
controller: "categoriesCtrl", 
resolve: { 
    categoriesDataResolve: function resolveTemplate($stateParams, DataResolver) { 
    return DataResolver.resolveTemplates($stateParams.address); 
    } 
} 
}); 

: "/カテゴリ/新"

<a ui-sref="/newCategories">New Category</a> 

しかし、私がリフレッシュすると、 "/ new"は$ stateParamsの一部だと思います。したがって、別のコントローラを使用してテンプレートを解決しようとします(これは欠落しているため、エラーが発生します)。今の

それはリフレッシュに混乱しないように、私は「/カテゴリ/新しい」を「/カテゴリ-新」からURLを変更して、それを修正しました。 しかし、この問題をどうやって解決すればいいですか?(多分ui-routerには何らかの対処方法があるかもしれません)

答えて

1

あなたが正しいと分かっていれば、別のコントローラを呼び出すことができます。 newCategoriesCtrladdress paramはnew

"/categories-new/categories/newを変更すると、それを解決するための正しい方法である場合、ユーザは/categories/:addressを呼び出します。


小さなヒント:状態名の接頭辞として/を使用するには、そのことをお勧め。それは開発者を混乱させ、元のURLと混在させることができます。

$stateProvider. 
//... 
state("newCategories", { 
    url: "/categories-new", 
    templateUrl: "/views/new_categories.html", 
    controller: "newCategoriesCtrl" 
}). 
state("categoryPages", { 
    url: "/categories/:address", 
    templateUrl: "/views/categories.html", 
    controller: "categoriesCtrl", 
    resolve: { 
    //... 
    } 
}); 
+0

予約リンク(「新規」や「編集」など)を確認してコントローラを変更することはできますか?それとも悪い習慣ですか? –

+0

@AlekseySoloveyも、すべての状態は、コントローラを所有しています。あなたがネストされたコントローラを作成したくないと確信しています:) –

関連する問題