路线改变后无法显示angularjs页面数据。

时间:2014-08-19 04:35:06

标签: angularjs angularjs-routing

我对angularjs比较新,看起来我在这里遗漏了一些明显的东西。我试图通过文档和教程,但无法找到解决问题的方法。

我在“localhost:8080 / app / rest / schools / {schoolId} / selectedindicators”上有一个REST服务。我可以在angularjs应用页面(selectedindicator.html)中显示结果,如下所示:

<tbody>
<tr ng-repeat="selectedindicator in selectedindicators">
    <td>{{selectedindicator.id}}</td>
    <td>{{selectedindicator.school.name}}</td>
    <td>{{selectedindicator.userId}}</td>
    <td>{{selectedindicator.dateVisit}}</td>
    <td>
        <button type="submit"
                ng-click="update(selectedindicator.id)"
                class="btn">
            <span class="glyphicon glyphicon-pencil"></span> Edit
        </button>

    </td>
</tr>
</tbody>

在此之前一切正常。但是,当我尝试通过单击“编辑”按钮选择一个所选指标时,我无法在“编辑”(selectedindicatorForm.html)页面上显示数据。这是我的编辑页面的一部分。

<div>
<div class="form-group">
    <label>ID</label> <input type="text" class="form-control" name="id"
        ng-model="selectedindicator.id" required>
</div>
.
.
.
.
.
.
</div>

这是我的routeProvider代码:

myApp
.config(['$routeProvider', '$httpProvider', '$translateProvider',
    function ($routeProvider, $httpProvider, $translateProvider) {
        $routeProvider
            .when('/selectedindicator', {
                templateUrl: 'views/selectedindicators.html',
                controller: 'SelectedIndicatorController',
                resolve:{
                    resolvedSelectedIndicator: ['SelectedIndicator', function (SelectedIndicator) {
                        return SelectedIndicator.query();
                    }]
                }
            })
            .when('/selectedindicatorForm',{
                 templateUrl: 'views/selectedindicatorForm.html',
                 controller: 'SelectedIndicatorFormController',              
            })

    }]);

以下是更新方法的控制器代码:

myApp.controller('SelectedIndicatorController', ['$scope', '$location', '$route','resolvedSelectedIndicator', 'SelectedIndicator',
function ($scope, $location,$route, resolvedSelectedIndicator, SelectedIndicator) {

    $scope.selectedindicators = resolvedSelectedIndicator;

    $scope.update = function (id) {
        $scope.selectedindicator = SelectedIndicator.get({id: id});
        $location.path("/selectedindicatorForm");
    }; 
}]);

3 个答案:

答案 0 :(得分:1)

本视频教程应该有所帮助。试一试:https://www.youtube.com/watch?v=5uhZCc0j9RY&feature=youtu.be

答案 1 :(得分:0)

您可以添加单独的服务(单例对象)以在控制器之间传递数据。

看起来像SelectedIndicator(传递到SelectedIndicatorController)已经在做了,你可以简单地重复使用它。

SelectedIndicatorFormController注入此服务SelectedIndicator并致电SelectedIndicator.get({id: id});

注意 - $scope.selectedindicator = SelectedIndicator.get({id: id});内的这一行SelectedIndicatorController看起来没有任何用途。

如果你可以设置一个插件,我可以帮助你。

答案 2 :(得分:0)

您是否有某些原因需要使用$ location.path进行转换?

我这样做的方式只是放一个或一个东西,一个类=&#34; btn&#34;或者其他一些css样式,如果你真的希望它看起来像一个按钮。使用常规ngRoute,您只需使用URL,并将所有状态放入URL。我非常确定设置一个$ scope变量,然后手动更改状态并没有实际执行任何操作,因为新状态有自己的$ scope。

在查看该代码之后,我要坦率地说,你可能会说你可能应该阅读一些有角度的教程。我发现egghead.io自己很棒。