这两个Angular代码片段有什么区别?

这个问题在这里已经有了答案:

  • AngularJS控制器中的'this'与$ scope有关的7个答案

  • 由于控制器的连接方式,代码片段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?

    下一篇: this vs $scope in angular.js?