2016-02-27 168 views
-1

我写了这个简单的代码作为学习练习,但我不明白为什么我在我的浏览器中得到错误的结果。为什么我的角码不工作?

结果我在浏览器中看到的是文字“{{helloMessage}}”而不是的 “Hello World”

代码:

<!DOCTYPE html> 
<html lang="en" ng-app> 
<head> 
<meta charset="UTF-8"> 
<title>Hello World</title> 
</head> 
<body> 

<h1 ng-controller="HelloWorldCtrl">{{helloMessage}}</h1> 

<script src="angular.js"></script> 
<script type="text/javascript"> 
    function HelloWorldCtrl($scope){ 
     $scope.helloMessage = "Hello World"; 
    } 
</script> 

</body> 
</html> 

这是输出的,我没有看到在浏览器中的任何错误:

enter image description here

+0

你的错误是什么? –

+0

可能是angular.js导入不正确!!! –

+0

angular.js确实可以正确导入。 – Yanshof

回答

3

这是你的代码正常工作!!!!!!

function HelloWorldCtrl($scope){ 
 
     $scope.helloMessage = "Hello World"; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app> 
 
    <h1 ng-controller="HelloWorldCtrl">{{helloMessage}}</h1> 
 
</div>

+0

upvoted你的良好发现。但注射src在顶部是必须的 –

2
<!DOCTYPE html> 

// call your myApp 
<html lang="en" ng-app="myApp"> 

<head> 
<meta charset="UTF-8"> 
<title>Hello World</title> 
</head> 
<body> 

<h1 ng-controller="HelloWorldCtrl">{{helloMessage}}</h1> 
<script src="angular.js"></script> 

// create your angular app 
var app = angular.module("myApp",[]); 

// create ng-controller inside your angular myApp 
app.controller('MainCtrl', function($scope) { 
    $scope.helloMessage = "Hello World"; 
} 

检查该工作plunkr

2

你的代码是不能工作的几个原因。

  1. 您未创建Angular应用程序的实例。控制器必须作为现有角度应用程序的属性存在。 它可以像这样创建。 angular.module('app',[]) 现在控制器可以追加到它像这样:

    angular.module('app', []) 
        .controller('HelloWorldCtrl',HelloWorldCtrl); 
    
    function HelloWorldCtrl($scope){ 
        $scope.helloMessage = "Hello World"; 
    } 
    
  2. 您没有使用角度依赖性注入正常。您可以确保您的参数$scope通过使用$inject属性像这样在运行时注入:

    angular.module('app', []) 
        .controller('HelloWorldCtrl',HelloWorldCtrl); 
    
    HelloWorldCtrl.$inject = ['$scope']; 
    
    function HelloWorldCtrl($scope){ 
        $scope.helloMessage = "Hello World"; 
    } 
    

这些变化,代码工作。请参阅working CodePen

+0

不是这样,兄弟看到我的答案和工作的重击者。他只是在控制器之后注入了angularjs。我值得你的赞赏:P –

+1

@AlexRumbaNicked你是对的 - 你得到了我的赞同。尽管如此,我仍然不喜欢它,对于Angular的新手来说,这有些太过分了,应该学习最佳实践和设置方法。 – rwisch45

+0

是的,但他的问题集中在一件事上,而你只是用CANON杀死了苍蝇:)。你应该得到upvote为你通过解释虽然:)但他的代码不工作,不是因为你提供的原因。 –

2

您的代码一切正常。只需在ng控制器之前注入src即<script src="angular.js"></script>即可。确保您的angular.js文件位于根目录中。
您的代码的plunkerhttp://plnkr.co/edit/Nhmg9FYJlHy9IwVsIJ0x?p=preview

<script src="angular.js"></script> 
<h1 ng-controller="HelloWorldCtrl">{{helloMessage}}</h1> 
<script type="text/javascript"> 
    function HelloWorldCtrl($scope){ 
     $scope.helloMessage = "Hello World"; 
    } 
</script> 

更新:我想你的src到angular.js不在根。尝试删除<script src="angular.js"></script>加入
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>在它的地方。

+0

那么,为什么在我的浏览器上我看到别的东西? – Yanshof

+0

你的兄弟在哪里?我的意思是你提供的资源不能够满。你有类似brother.html的东西吗? –

+0

不,只是简单的谷歌浏览器 – Yanshof

0

当你想呈现一个angularJs应用程序变量在HTML中,它必须在角上下文中定义。因为这个函数没有在角度上下文中定义,而只是作为一个javascript函数,它不起作用。

函数HelloWorldCtrl($ scope){$ scope.helloMessage =“Hello World”; }