这两个Angular代码片段有什么区别?
这个问题在这里已经有了答案:
由于控制器的连接方式,代码片段A很可能不工作。 我在这里大肆猜测。
在你添加ng-controller
它应该看起来像这样:
<body ng-controller="dishDetailController as dish">
在哪里你可能会有这个:
<body ng-controller="dishDetailController">
可能不是身体标记可能是div或其他东西。
为了更好地理解片段A控制器中的内容,请尝试:
var app = angular.module('confusionApp',[]);
app.controller('dishDetailController', function() {
this = {//attributes here}
});
否则,您可能需要在模板中写入{{dish.dish.stuff}}
。
第二个片段(B)或多或少直接出自https://docs.angularjs.org/guide/controller文档,并且很可能是您要查找的内容。
在代码片段A中,通过this
值分配值将直接将值应用于控制器本身。 这会使得在其他情况下访问非常困难,而且很可能不是您想要的。
相反,片段B利用由AngularJS提供的依赖注入来确保适当的范围被注入到方法中。 $scope
具有更复杂的生命周期,但需要注意的重要一点是,这会使得dish
在控制器的上下文外部可用,例如在HTML模板中。
如果你需要更多的细节,这个人有一个更好的答案:AngularJS控制器中的'this'vs $ scope
chech this code it is working
<div ng-app='confusionApp' ng-controller='dishDetailController' class="media-body">
<h2 class="media-heading">{{dish.name}}
<span class="label label-danger">{{dish.label}}</span>
<span class="badge">{{dish.price}}</span></h2>
<p>{{dish.description1}}</p>
</div>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.2/angular.min.js"></script>
<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;
});
</script>
链接地址: http://www.djcxy.com/p/77793.html
上一篇: What's the difference between these 2 Angular code snippets?