我試圖獲取$state
的URL。
基本上我想要做反向的:
$state.href('user.home.view', {}, {absolute: true});
而是獲取Abs URL
我想獲得該州的名字;
我想通過一個Abs URL到一個函數,然後在angular的項目中獲得一個有效的$state
。
我試圖獲取$state
的URL。
基本上我想要做反向的:
$state.href('user.home.view', {}, {absolute: true});
而是獲取Abs URL
我想獲得該州的名字;
我想通過一個Abs URL到一個函數,然後在angular的項目中獲得一個有效的$state
。
有一個名爲$uiView
的數據字段附加到ui-view
元素,它包含視圖名稱和關聯的狀態。你可以得到這樣的狀態:
elem.closest('[ui-view]').data('$uiView').state
甚至
elem.inheritedData('$uiView').state
所以,在你的控制器:
.controller('State1Ctrl', function ($state) {
console.log(elem.closest('[ui-view]').data('$uiView').state); // state1
console.log($state.current.name) ;//will give the state name as well.
});
UPDATE:
Your issue:
https://github.com/angular-ui/ui-router/issues/1651
解決方法:
ANGULAR-UI-ROUTER: Resolve state from URL
您可以通過使用.decorator鉤上$stateProvider
暴露內部狀態的實現。你可以裝飾國家建設者的任何財產;有人選擇'parent'
任意。
app.config(function($stateProvider) {
$stateProvider.decorator('parent', function (internalStateObj, parentFn) {
// This fn is called by StateBuilder each time a state is registered
// The first arg is the internal state. Capture it and add an accessor to public state object.
internalStateObj.self.$$state = function() { return internalStateObj; };
// pass through to default .parent() function
return parentFn(internalStateObj);
});
});
現在你可以使用。$$ state()方法來訪問內部狀態對象。
var publicState = $state.get("foo");
var privateInternalState = publicState.$$state();
//Second, loop over each state in $state.get() and test them against your URL fragment.
angular.forEach($state.get(), function(state) {
var privatePortion = state.$$state();
var match = privatePortion.url.exec(url, queryParams);
if (match) console.log("Matched state: " + state.name + " and parameters: " + match);
});
剛剛更新了這個問題......我想**通過**一個URL在應用程序中獲得一個有效的$狀態......這可能嗎? –
我不知道,因爲文檔沒有提到你現在所期望的。我們正在談論可能會或可能不會解決一個國家的absURL。雖然可能有一些黑客入侵。 –
謝謝!這是一個很好的解決方法! –
有疑問時...'的console.log($狀態)',並檢查那裏有什麼 – charlietfl
檢查更新的答案,如果可以幫助你一些。不完全是你想要的,但可以滿足你的需求。 –