或者說,我沒有做單頁在嚴格意義上,當使用$ routeParams的方式...AngularJS:有沒有使用單頁
嗨,
首先,一些
背景
我有所有以前加載頁面需要在屏幕上被持久化的要求,從而使ST沒有存儲就保存了。所以我(想我)不能使用標準的單頁結構(使用ngView)。相反,我加載MVC局部視圖,並將它們添加到當前頁面,同時隱藏以前的條目。
apiService.View(viewInfo.Url).then(function (html) {
var container = $('#' + self.targetContainerId);
if (container) {
container.html($compile(html)($scope));
} else {
loggerService.Info(self.Name, "Unable to find container '" + self.targetContainerId + "'.")
}
});
凡viewInfo包含以下(爲特定的方案,我問):
回報{ 麪包屑:「人民, 網址: '偏/ PeopleOverview' +' /'+ options.ScreenContextId +'/'+ options.RoleTypeId };
apiService.View執行以下操作:基於
return {
View: function (uri) {
return self.DoViewRequest('get', uri);
}
}
:
self.DoViewRequest = function (verb, uri) {
var defer = $q.defer();
verb = verb.toLowerCase();
//start with the uri
var httpArgs = [coreUtilityService.GetLocalUrl() + uri];
if (verb.match(/post|put/)) {
httpArgs.push(data);
}
$http[verb].apply(null, httpArgs)
.success(function (response) {
defer.resolve(response);
})
.error(function (response, status) {
defer.reject('HTTP Error: ' + status);
});
return defer.promise;
};
我需要解決
ScreenContextId和RoleTypeId是我需要在整個結構中傳遞的重要信息。它是從URL呼叫,這是該接受:
/主頁/人/ 0f8fad5b-d9cb-469f-a165-70867728950e/7c9e6679-7425-40de-944B-e07fc1f90ae7
這將是非常容易,如果我可以使用$ routeParams,但由於我沒有嚴格意義上使用單頁,我認爲它不可用。我已經設置了路由這樣的:
.config([
'$routeProvider', function ($routeProvider) {
$routeProvider
.when('/Home/People/', {
templateUrl: '/Home/People/:screenContextId/:roleTypeId'
});
}
])
有了這個,我會那麼(理論上)能夠使用:
$ routeParams.screenContextId $ routeParams.roleTypeId
問題
是否可以使用$ routeParams給定所需的contx噸,還是有我應該使用的替代品?
或者,是否有使用單頁和滿足我的要求(不持續狀態存儲)的方法嗎?
啊是的,我正要問是否適用於REST網址:)。然而,路徑似乎是空的。 $$ absUrl儘管包含完整的網址。這將工作,但整個網址被拆分,導致包含七個實體的字符串數組,其中我只需要兩個。有沒有更優雅的選擇? – Spikee
據我所知不,但你可以在你的自定義服務中抽象該功能:) – tomastrajan
我會推遲選擇這個答案,以允許其他人提供也許是更優雅的替代品,但它確實得到任務完成 :)。 – Spikee