What's the difference between these 2 Angular code snippets?
本问题已经有最佳答案,请猛点这里访问。
我要上一门关于安古拉吉斯的课程。
讲师在视频中演示的代码可以正常工作,但由于某些原因,我无法在我的环境中运行:
页面布局(部分):
1 2 3 4 5 6 | <h2 class="media-heading">{{dish.name}} <span class="label label-danger">{{dish.label}}</span> <span class="badge">{{dish.price | currency}}</span> <p> {{dish.description}} </p> |
片段A(教授证明我无法工作):
1 2 3 4 5 6 7 8 | var app = angular.module('confusionApp',[]); app.controller('dishDetailController', function() { var dish={ //attributes here; }; this.dish = dish; }); |
当我运行这个函数时,我在控制台中不会得到任何错误,但是在显示中不会得到任何错误。
片段B:
1 2 3 4 5 6 7 | var app = angular.module('confusionApp',[]); app.controller('dishDetailController', function($scope) { var dish={ //attributes here;}; $scope.dish = dish; }); |
当我这样做的时候,它是有效的。有什么区别吗?
由于控制器的连接方式,代码段A很可能无法工作。我在这里胡思乱想。
如果添加
1 | <body ng-controller="dishDetailController as dish"> |
你可能会有这样的选择:
1 | <body ng-controller="dishDetailController"> |
可能不是body标记,也可能是一个div或其他东西。
为了在代码片段中更清楚地理解它,控制器可以尝试:
1 2 3 4 5 6 | var app = angular.module('confusionApp',[]); app.controller('dishDetailController', function() { this = {//attributes here} }); |
否则,您可能需要在模板中编写:
第二个片段(b)或多或少是直接从文档https://docs.angularjs.org/guide/controller中提取出来的,并且很可能是您正在寻找的。
在代码段A中,通过
相反,代码段B利用AngularJS提供的依赖注入来确保将适当的作用域注入到方法中。
如果你需要更多的细节,这家伙有一个更好的答案:"这"和$scope在AngularJS控制器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | chech this code it is working <h2 class="media-heading">{{dish.name}} <span class="label label-danger">{{dish.label}}</span> <span class="badge">{{dish.price}}</span> <p> {{dish.description1}} </p> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.2/angular.min.js"> <script type="text/javascript"> var app = angular.module('confusionApp',[]); app.controller('dishDetailController', function($scope) { var dish={ label:'name',name:'afzal',price:'10',description1:'this is the price'}; $scope.dish = dish; }); |