使用ui-sref

时间:2017-09-06 16:40:48

标签: javascript angularjs angular-ui-router angularjs-scope angularjs-ng-click

这绝对是在杀我。

这就是我所在的地方:

enter image description here

当我到达此页面时,它会将其打印到控制台中:

enter image description here

然后我点击lorem2作为ng-click,它应该改变左侧大方块上显示的对象。奇怪的是,当我点击lorem2:

时,它会将其发布到控制台中

enter image description here

它会更改该变量的值,但它会使用与第一个位置相同的对象重写该更改。

最奇怪的是,如果我再次点击,我会得到这个:

enter image description here

这意味着现在更改仍然存在,并在大方块上显示lorem2。 关于什么可能触发这个的任何建议?

这是在控制器内部:

$scope.singleArticle = $scope.articlesList[0];
console.log($scope.singleArticle);


$scope.changeArticle = function(article){
    $scope.singleArticle = article;
    console.log($scope.singleArticle);
};

这是我调用的函数点击更改值。

这里有一些相关的HTML代码:

<div class="col-lg-7">
    <div class="panel panel-default">
        <div class="panel-body">
            <p>{{singleArticle.title}}</p>
            {{singleArticle.content}}
        </div>
    </div>
<div class="col-lg-3">
    <div class="panel panel-default" ng-repeat="article in articlesList | limitTo: (1 - articlesList.length) | limitTo: 3">
        <div class="panel-body">
            <a ui-sref="articles_route({ article: article.title})"
               ng-click="changeArticle(article)">{{article.title}}
            </a> {{article.content | limitTo: 100}}.
        </div>
    </div>
</div>

感谢您的时间:)

1 个答案:

答案 0 :(得分:1)

问题是您将article作为参数加载到changeArticle函数中。 article是ng-repeat返回的articlesList的关键。

您需要在每个ng-repeat循环显示的articlesList数组中发送值。

使用ng-repeat按索引跟踪track by $index,并将每个数组项的索引传递给articlesList[$index]

之类的函数
    <div class="col-lg-7">
    <div class="panel panel-default">
        <div class="panel-body">
            <p>{{singleArticle.title}}</p>
            {{singleArticle.content}}
        </div>
    </div>
<div class="col-lg-3">
    <div class="panel panel-default" ng-repeat="article in articlesList | limitTo: (1 - articlesList.length) track by $index">
        <div class="panel-body">
            <a ng-click="changeArticle(articlesList[$index])">{{article.title}}
            </a> {{article.content | limitTo: 100}}.
        </div>
    </div>
</div>

您可以阅读ng-repat语法here.

编辑:另外,我正在回答这个问题,假设你有一个改变的url路径,就像你在OP的评论中所说的那样。此代码使内容按您的要求更改。