Anjualr Js Noting
- 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.