使用AngularJS将URL的ID更改为特定名称

时间:2018-09-20 07:10:05

标签: javascript html angularjs

我正在为我的项目使用AngularJS。我正在创建一个论坛,每个认证有很多资格等级和主题。 ID为“ F”的级别:初级1,初级2,初级3等。 ID为“ D”的科目:英语,数学,科学等。 所有人都有自己的唯一ID,每个级别的ID都链接到Subjects的parentID。当我单击Elementary 1时,将传递E1的ID,并显示所有具有E1的parentID的主题。 现在是我的网站的问题:http://127.0.0.1:8080/#!/discussionlist 显示论坛主页。Homepage 当我单击Primary 1时,它将转到:http://127.0.0.1:8080/#!/discussionlist/4a6f8ec4-1441-4ccc-ad4b-59fc03ca5147 First level 当我单击英语时,它将第一个ID替换为英语的ID: enter image description here 我想要实现的是将唯一ID更改为我单击的标题(http://127.0.0.1:8080/#!/discussionlist/Primary1),并将URL附加为类似(http://127.0.0.1:8080/#!/discussionlist/Primary1/English)的内容。 这是更改URL的代码:

    $scope.titleClicked = function (id,title){
    currentID = id
    $scope.discussiontopics.splice(0);

    console.log(id);
    $location.path("/discussionlist/" + id);


}

Route.js:

   .when("/discussionlist", {
    controller: "discussionlistController",
    templateUrl: "src/functions/discussion-list/template.html"
})
.when("/discussionlist/:parentid", {
    controller: "discussionlistController",
    templateUrl: "src/functions/discussion-list/template.html"
})

HTML:

<div ng-controller="discussionlistController">
<div align="center" style="width: 100vw; ">
    <div class= "row content" align="left">
        <md-input-container>
            <div id="breadcrumb">
                <a href="/">Home</a> > <a href="http://127.0.0.1:8080/#!/discussionlist">Level</a> > <a href="">{{o.title}}</a> 
            </div>
            <!-- Add a short description here -->
            <div class="description">
                <p> {{ shortdescription }} </p>
            </div>
            <br />
            <!-- Add a table of contents here -->
            <div class="content-table">
                <table class="lay" md-table>
                    <tr md-row>
                        <td md-cell>Forum</td  md-cell>
                        <td  md-cell>Post</td  md-cell>
                    </tr md row>
                    <tr md-row ng-repeat="o in discussiontopics">
                        <td md-cell>
                            <a class="main-topic" ng-click="titleClicked(o.id,o.title)" aria-label="{{o.title}}">{{o.title}}</a>      
                            <p class="sub-topic">{{o.description}}</p>
                        </td md-cell>
                        <td md-cell>
                            <p></p>
                            <p class="sub-topic">{{}}</p>
                        </td md-cell>
                    </tr md-row>
                </table>
            </div>
            <div class="errormsg">
                <p>{{ error }}</p>
            </div>
        </md-input-container>   
    </div>
</div>

问题是,有2个不同的ID,所以我必须将ID更改为parentID和childID之类的东西?抱歉,我的解释不力,问题的要点是如何将id更改为名称并使其成为相对URL。 谢谢!

1 个答案:

答案 0 :(得分:0)

据我了解,您可以使用所需的/ english / somethingelseyouse作为URL参数,而不是将ID作为URL参数传递。 即。您可以使用$ stateParam传递您的ID,而不能在url上使用它。

.state(somestate.state,                     {                         网址:“ / path”,                         控制器:“ controller”,                         参数:{someParam:null},                         controllerAs:“ vm”,数据:neededData                         }

您还可以使用“数据”并从状态更改中传递。我不确定这是否有帮助。但是,祝你好运。