角度控制器如何与兄弟控制器通信?

时间:2016-03-21 00:14:03

标签: angularjs scope push

我刚刚看到一个有效的代码,但我不明白: 目的是在一组名为[电影]的电影中添加一部电影。 我们可以在第一个控制器ctrl1中找到这个数组:

angularMovieApp.controller("ctrl1" ,function ($scope) {
$scope.movies = [
    {id: 1,
        title : "Avatar",
        releaseYear : "2010",
        poster : "img/avatar.jpg",

    { id: 2,
        title : "Yip Man 2",
        releaseYear : "2010",
        poster : "img/yipman.jpg"
    }
];

Ctrl2是Ctrl1的兄弟(不是chil或父母)。它通过表单html添加一个新的电影(电影),并用这行代码将它添加到数组[电影]:

    angularMovieApp.controller("Ctrl2" ,function ($scope) {
    $scope.addMovie = function(movie){
    $scope.movies.push(movie);
    $scope.movie = {};
};

Ctrl2如何理解[电影]是什么,可以完成它而不是范围? 谢谢你的解释

这里是html代码:

<section class="container" ng-controller="moviesController">

<header class="page-header">
    <h1>Ma vidéothèque <small>{{movies.length}} films</small>
        <button class="btn btn-primary" data-toggle="modal" data-target="#movie-form-modal">Ajouter un film</button>
    </h1>
</header>

<ul class="thumbnails">
    <li ng-repeat="movie in movies" class="span12">
        <img ng-src="{{movie.poster}}" class="span2">
        <div class="caption">
            <h3>{{movie.title}}</h3>
            <p><b>Année de sortie : </b>{{movie.releaseYear}}</p>
            <p><b>Réalisateur : </b>{{movie.directors}}</p>
            <p><b>Acteurs : </b>{{movie.actors}}</p>
            <p><b>Synopsis : </b>{{movie.synopsis}}</p>
            <p><b>Note : </b>{{movie.rate}}</p>
        </div>
    </li>
</ul>
             ?         

Ajouter un film

                                                Titre:                                                            Annéedesortie:                                                            Réalisateur:                                                            Acteurs:                                                            剧情简介:                                                            注意 :                                                          更改或取消         Ajouter     

这是完整的js代码: angularMovieApp.controller(“moviesController”,function($ scope){

$scope.movies = [
    {
        id: 1,
        title : "Avatar",
        releaseYear : "2010",
        poster : "img/avatar.jpg"
    },
    {
        id: 2,
        title : "Seigneur des Anneaux : La Communauté de l'Anneau",
        releaseYear : "2003",
        poster : "img/seigneurdesanneaux1.jpg",
        directors : "Peter Jackson"
    }
];

});

angularMovieApp.controller(“movieFormController”,function($ scope){

$scope.addMovie = function(movie){
    $scope.movies.push(movie);
    $scope.movie = {};
};

});

我在此处找到此代码:https://github.com/lauterry/angularmovie.git (步骤-3-溶液)

艾曼

1 个答案:

答案 0 :(得分:0)

我明白了。 代码中有错误。第一个控制器的部分未关闭。如果我关闭它,很明显Ctrl1是Ctrl2的父级。因此,Ctrl 2可以读取Ctrl1。 谢谢。你帮我看清楚。