AngularJs $ scope参数名称

时间:2018-02-07 06:08:25

标签: javascript angularjs-directive angularjs-scope

我对AngularJs很陌生。在最初的章节中,我看到使用了$ scope,就像在控制器内部一样。

<script>
var app = angular.module('app1', []);
app.controller('ctrl1', function($scope) {
    $scope.fn = "John";
    $scope.ln = "Parker";
});
</script>

如果我将功能参数 $ scope 替换为 $ s 左右,那么代码就不起作用了。为什么?

我的意思是看起来我们正在传递一个回调函数,那么为什么参数名称很重要?

请帮忙。

提前致谢
巴鲁

3 个答案:

答案 0 :(得分:1)

  

Scope是一个引用应用程序模型的对象。它是一个   表达式的执行上下文。范围按层次排列   模仿应用程序的DOM结构的结构。范围可以   观察表达并传播事件。

$scope是AngularJS提供的对象,它是HTML(视图)和控制器之间的绑定部分,您无法按照预期的方式对其进行更改。

我建议你阅读manual

答案 1 :(得分:1)

Angular重新编译代码并根据需求进行依赖注入。然而,更好的做法是以这种方式编写控制器:

app.controller('testCtrl', ['$scope', function($scope){}]);

即使对文件进行模糊处理,此代码也能正常工作。 您可以尝试以下链接来更好地理解这一点。

Understanding dependency injection

答案 2 :(得分:1)

您可以重命名$ scope,但是您需要添加一些字符串映射(因此angularjs将弄清楚如何注入正确的项目)。此功能主要用于缩小:

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

app.controller('ctrl1', ['$scope', function($s) {
    $s.fn = "John";
    $s.ln = "Parker";
}]);

JSFIDDLE

顺便说一句,最好停止使用$ scope并开始使用controlleras功能。阅读它here

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

app.controller('ctrl1', function() {
    this.fn = "John";
    this.ln = "Parker";
});

<div ng-app="app1" ng-controller="ctrl1 as vm">
   {{vm.fn}}
</div>

JSFIDDLE