Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ng repeat中调用方法_Javascript_Angularjs - Fatal编程技术网

Javascript 在ng repeat中调用方法

Javascript 在ng repeat中调用方法,javascript,angularjs,Javascript,Angularjs,我在学习angularjs,所以我开始玩yts数据库电影api,它工作得很好,直到我注意到我的主页上需要不同的功能,例如“最新电影”、“最佳评级”。 所以我创建了一些方法,其中每个方法都与最新的电影或升级电影相关,等等。但是我不能让代码启动,我的init方法 这是我的密码: var app = angular.module('myApp', ['ngRoute']); app.config(function($routeProvider){ $routeProvider

我在学习angularjs,所以我开始玩yts数据库电影api,它工作得很好,直到我注意到我的主页上需要不同的功能,例如“最新电影”、“最佳评级”。 所以我创建了一些方法,其中每个方法都与最新的电影或升级电影相关,等等。但是我不能让代码启动,我的init方法

这是我的密码:

var app = angular.module('myApp', 
    ['ngRoute']);

app.config(function($routeProvider){
    $routeProvider
    .when('/home',{
        templateUrl: 'assets/template/home.html',
        controller: 'HomeController'
    })  
    .otherwise({
        redirectTo: '/home' 
    });
});

app.controller('HomeController', function($scope,$http){
    $scope.upcomingList = [];
    $scope.latestMovies = [];

    //initilize 
     $scope.init = function() {
            $scope.getCommingSoon();
            $scope.getLatestMovies();

        };


    $scope.getLatestMovies = function(){
        $http({
        method: 'GET',
        url: 'https://yts.to/api/v2/list_movies.json'
        })
        .success(function(data, status, headers){
            $scope.latestMovies = data;
        })
        .error(function(data, status, headers){

        });
    }



    $scope.getCommingSoon = function() {
            $http({
                method: 'GET',
                url: 'https://yts.to/api/v2/list_upcoming.json'
            })
            .success(function(data, status, headers){
                $scope.comingsoon = data;

            })
            .error(function(data, status, headers){

            });
        };


});
home.html

 <div ng-init="init();" class="container home-content">

 <div  ng-repeat="movie in getLatestMovies | limitTo: 4" class="browse-movie-wrap col-xs-10 col-sm-5">
                       <p>{{latestMovies}}</p>
</div>

不会呈现数据,因为您在ngRepeat中使用了getLatestMovies而不是latestMovies,并且不需要使用ngInit

您可以直接在ngRepeat内部调用方法

<div class="container home-content">

 <div  ng-repeat="movie in getLatestMovies() | limitTo: 4" class="browse-movie-wrap col-xs-10 col-sm-5">

</div>

天狼星的答案是,你需要在最新电影中使用电影。 原因是:

1 ngRepeat指令中的属性只接受表达式,不计算表达式

2 AngularJs是一个模型视图框架。当你和Angular一起工作时,真的试着用Angular思考。将数据放入模型的方式都在控制器中设置。该视图是一个以html标记显示组织数据模型的窗口。只有某些事件触发指令(如ngClick)会评估控制器中的方法,以触发模型更改事件,$watch会一直监视该事件


无论如何,在您的情况下,您实际上只需要使用一个模型,而不是在您的作用域中使用一个方法,因为视图需要绑定一个模型。

您需要在latestMovies中使用ng repeat=movie | limito:4@MaheSirius非常感谢,愚蠢的我,最后一个问题,在我的ng repeat中,我必须将电影放在latestMovies.data.movies中,因为json是一个多维数组,这是正确的方法还是我必须在控制器中进行此更改?你可以这样做,或者直接分配$scope=data.data.movies会更好。我会将此作为答案发布,请接受: