2015-08-28 14 views
0

或者說,我沒有做單頁在嚴格意義上,當使用$ 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; 
}; 

我需要解決

ScreenContextIdRoleTypeId是我需要在整個結構中傳遞的重要信息。它是從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噸,還是有我應該使用的替代品?

或者,是否有使用單頁和滿足我的要求(不持續狀態存儲)的方法嗎?

回答

1

爲此,您可以使用$ location.search()。它將爲您提供與$ routeParams具有相似/相同結構的對象。

對不起,記住錯誤地使用$ location.path()。split('/'),你會得到一個路徑參數數組,然後用索引訪問正確的數組。

+0

啊是的,我正要問是否適用於REST網址:)。然而,路徑似乎是空的。 $$ absUrl儘管包含完整的網址。這將工作,但整個網址被拆分,導致包含七個實體的字符串數組,其中我只需要兩個。有沒有更優雅的選擇? – Spikee

+0

據我所知不,但你可以在你的自定義服務中抽象該功能:) – tomastrajan

+0

我會推遲選擇這個答案,以允許其他人提供也許是更優雅的替代品,但它確實得到任務完成 :)。 – Spikee

相關問題