Note About Angularjs

Anjualr Js Noting

  1. ng-repeat and bindings

In Js, keep one thing in mind, object assign is just using reference. that is to mean if you write t={Name:"hello"};h=t, So the t, h share the same memory where hold the object.
So any modification to t will reflect to h .
Now we come to ng-repeat . we can see the code sample here:

<table class="table">
   <thead>
     <tr>
        <th>名称</th>
        <th>描述</th>
        <th>操作</th>
     </tr>
   </thead>
  <tbody>
    <tr ng-repeat="catalog in cl.catalogsList" catalog-detail each-catalog="catalog" >
    </tr>
  </tbody>
 </table>

here are the directive definition

function catalogDetailController($scope,catalogService) {
    var cd = this;
    cd.editMode = false;
    cd.handleEdit = function () {
        if (cd.editMode) {
            $scope.catalog = { Id: 4, Name: "test", Description: "ddd" };
            //catalogService.updateCatalog($scope.catalog)
            //                .then(
            //                function successCallback(response) {
            //                    $scope.catalog = angular.copy(response.data);
            //                }, function failCallback(response) {
            //                    alert("error while update");
            //                    $scope.catalog = angular.copy(cd.originalCatalog);
            //                }
            //                );
        }
        else {
            cd.originalCatalog = angular.copy($scope.catalog);
        }
        cd.editMode = !cd.editMode;
    };
}
function catalogDetailDirective($http) {
    return {
        scope: {
            catalog: "=eachCatalog",
            deleteCatalog: "&"
        },
        templateUrl: "/../App_Client/Components/Catalogs/CatalogDetail.html",
        controller: catalogDetailController,
        controllerAs:"cd"
    }
}
angular.module("catalogsApp")
        .directive("catalogDetail", catalogDetailDirective);

Note: we must not assign a object value to the variables inherited from parent. In this example, we must not assign object to $scope.catalog,
otherwise, the modification will not reflect to the parent, that is catalogList. So, I guess scope binding, just use the reference to achive this goal.

原文地址:https://www.cnblogs.com/kongshu-612/p/5959512.html