Angularjs-控制器和视图之间的绑定

Angularjs - Binding between controller and view

本文关键字:绑定 之间 视图 控制器 Angularjs-      更新时间:2023-09-26

我对Angularjs视图有问题。不知怎么的,我做错了什么,不知道哪里出了问题。希望有人能帮我。

问题是{{user.login}}(userRepoInfo.html file)根本不会从控制器调用,如果我执行console.log,那么服务会很好地调用它。我在视图和控制器之间肯定做错了什么

I have five files
1) gitHubApiServices.js 
2) gitHubApiController.js
3) userRepoInfo.html
4) app.js
5) index.html

下面是gitHubApiServices.js

  (function() {
                var gitHubApiFactory = function($http) {
                    var factory = {};
                    factory.getUserName = function(userName) {
                        console.log(userName + " " + "This is from Services")
                        return $http.get("https://api.github.com/users/" + userName);
                    };
                    return factory;
                };
                gitHubApiFactory.$inject = ['$http'];
                angular.module('gitHubApp').factory('gitHubApiFactory',gitHubApiFactory);
            }());

下面是gitHubApiController.js

 (function() {
            var gitHubInfoController = function ($scope,gitHubApiFactory) {
                $scope.user = null;
                $scope.gitHubUser = function(userName) {
                    gitHubApiFactory.getUserName(userName)
                        .success(function (data) {
                            $scope.user = data;
                            console.log(data);
                        })
                        .error(function(data, status, headers, config) {
                            $log.log(data.error + ' ' + status);
                        });
                }
            };
            gitHubInfoController.$inject = ['$scope','gitHubApiFactory'];
            angular.module('gitHubApp')
                .controller('gitHubInfoController', gitHubInfoController);
        }());

下面是userRepoInfo.html

 <div data-ng-controller="gitHubInfoController">
                <h1>Github App</h1>
                <input type="text" id="gitUserName" ng-model="gitUser" placeholder="Please enter your GitHub Username">
                <a href="#" id="getUserRepo" ng-click="gitHubUser(gitUser)">Get my Repository</a>
                {{user.login}}
            </div>

下面是app.js

(function() {
    var app = angular.module('gitHubApp', ['ngRoute']);
    app.config(function($routeProvider) {
        $routeProvider
            .when('/', {
                controller: 'gitHubInfoController',
                templateUrl: 'app/views/userRepoInfo.html'
            })
            .otherwise( { redirectTo: '/' } );
    });
}());

下面是index.html

<!doctype html>
<html data-ng-app="gitHubApp">
<head>
    <title>Github Repository App</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    <div data-ng-view></div>

<script src="vendor/angular.js"></script>
<script src="vendor/angular-route.js"></script>
<script src="app/app.js"></script>
<script src="app/controllers/gitHubApiController.js"></script>
<script src="app/services/gitHubApiServices.js"></script>
</body>
</html>

请帮我解决这个问题。我花了几个小时,但运气不好。

感谢您的努力

我已经用{{user.login}}而不是plinkr中的CCD_ 3,并且工作良好。它返回我的用户名(或我从GitHub RestFull Api.请求的任何其他信息

不应在视图中使用$scope。Angular将为您指定合适的范围,并将其注入以供视图使用。

看看这个庞克:http://plnkr.co/edit/16yyngPoZBgzVvfyWCDq

附言:为了简单起见,我把你的文件夹结构弄平了。