【问题标题】:Angular: passing json - not appearing in frontendAngular:传递 json - 没有出现在前端
【发布时间】:2015-10-07 17:26:48
【问题描述】:

我是 Angular 的新手,我正在尝试将我的数据传递到前端。 在控制台中,它以“200 OK 状态(缓存)”作为回答,但不是我查看了类似这样的各种问题,但我无法完成。

    .factory('caseFactory', function($http, $stateParams) {

 return{
    getCases : function() {
        return $http({
            url: 'assets/app/work/detail/' + $stateParams.caseID + '.json',
            method: 'get'
        })
    }
 }
})



.controller('workDetail', ['$scope', 'caseFactory',

function($scope, caseFactory) {

        $scope.case = [];
        caseFactory.getCases().success(function(data){
        $scope.case = data;
        console.log('well it works though');
        alert(JSON.stringify(data));
        })
        .error(function(data) {
          console.log('sorry')
        });

}])

我什至不确定哪个表达式是正确的 atm,所以我只是尝试了 一些,并希望它会成功.. 至少一次。

.state('detail', {
    url:'/detail/:caseID',
    templateUrl: 'assets/app/work/detail/detail-view.html',
    controller: 'workDetail',
    controllerAs: 'detail'

})


<div class="detailCover">
    <div class="detailCoverText">
        <h3>Headline{{ detail.title }}</h3>
        <div class="category">Kategorie{{detail.category}}</div>
        {{ detail.case.title }}
        {{ case.title }}
    </div>
</div>

【问题讨论】:

    标签: javascript json angularjs get


    【解决方案1】:

    您正在使用controllerAs 语法,因此您应该在视图中引用this 而不是$scope。最佳实践要求您应该创建一个变量来表示 this 以避免范围问题。

    function(caseFactory) {
        var vm = this;
        vm.case = [];
    
        caseFactory.getCases().success(function(data){
            vm.case = data;
            console.log('well it works though');
            alert(JSON.stringify(data));
        })
        .error(function(data) {
            console.log('sorry')
        });
    }])
    

    这允许您使用detail 调用您的模板来表示您的控制器的范围。

    {{ detail.case[0].title }}
    

    至于您的缓存,我怀疑是模板调用被缓存,而不是数据调用。

    由于您的数据仅使用 ng-repeat 显示,因此它是一个数组。你应该索引case[0]

    【讨论】:

    • 感谢您的快速答复!但它仍然没有出现..但如果我使用 ng-repeat 就会出现。
    • 如果用 ng-repeat 显示,那么它是一个数组。通过索引抓取它。请查看我的更新答案。
    【解决方案2】:

    使用 Chrome,然后使用汉堡菜单、开发者工具、网络,然后禁用缓存,然后重试

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-25
      • 1970-01-01
      相关资源
      最近更新 更多