AngularJSのスコープまたはスコープについて

Angularでは、通常、子スコープは親からプロトタイプ的に継承されます。 唯一の例外は、 scope: { ... }



を使用するディレクティブscope: { ... }



、これはプロトタイプ的に継承されない「分離」スコープを作成します。 この設計は、再利用可能なコンポーネントのディレクティブを作成するときによく使用されます。



通常、ドメインの継承は直接的なものであり、多くの場合、どのように行われるかを知る必要さえありません... プリミティブ (例:数値、文字列、論理型) への 双方向のデータバインディング (つまり、フォーム要素、ngモデル) )子から親スコープで定義されます。 ほとんどの人が期待するようには機能しません。 子孫が独自のスコープを作成し、同じ名前の親プロパティと重複することがあります。 これはAngularの機能ではないため、プロトタイプの継承はJavascriptで機能します。 Angularを使用する新しい開発者は、ng-repeat、ng-switch、ng-view、ng-includeが新しい子領域を作成することに気付かないことが多いため、これらのディレクティブを使用すると問題が発生します。



この問題は、「 ベストプラクティス 」に従うことで簡単に回避できます。これは、ng-modelの式に常にピリオドを含める必要があることを示しています。



モデル内のドット「。」により、プロトタイプの継承が正常に機能することが保証されます。 だから



.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.








   
      

.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.








   
      

.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'

, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.














.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.








   
      

.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.








   
      

.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.








   
      

.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.








   
      

.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.








   
      

.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.








   
      

.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">

(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.














.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.








   
      

.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.








   
      

.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.








   
      

.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.








   
      

.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










.



/ , :



1. $parent.parentScopeProperty




. .

2. , , ( )





, , .



parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



画像



( , , anArray



, .)



, parentScope, , , , , . ( parentScope, ... ). , :



childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





, :



childScope.aString = 'child string'





, aString childScope. parentScope . , ng-repeat ng-include .



画像



, :



childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





, (anArray anObject) childScope. parentScope, . childScope; . (, .)



画像



, :



childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





, , parentScope .



画像



:



childScope.propertyX childScope propertyX, . childScope.propertyX, .

:



delete childScope.anArray childScope.anArray[1] === 22 // true





childScope, , , .



画像





:



, : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



, transclude: true



. , : scope: { ... }



. «» .

, , , .. scope: false



.



ng-include

, :



$scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





HTML:



<script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





ng-include , .



画像



(, «77») , myPrimitive , .



, , .



画像



(, «99») . tpl2.html , , ngModel MyObject — .



画像



: , «99» 11, 50.



$parent, :



<input ng-model="$parent.myPrimitive">





(, «22») . ( $parent ,

).



画像



( ), Angular - (. . ), $parent, $$childHead $$childTail . .



, , . , , . ,



// $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





, « ». ( Stack Overflow .)



. stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



ng-switch

ng-switch ng-include. , $parent , . .



. AngularJS, bind scope of a switch-case?



ng-repeat

ng-repeat -. , :



$scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





HTML:



<ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





/, ng-repeat , , . ( .) ng-repeat:



childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





( myArrayOfPrimitives), , . (. ., num



, ng-model) . , ng-repeat , num



, myArrayOfPrimitives:



画像



ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



, ( ) . (. ., num



, ng-model) . ng-repeat , :



画像



( .)



, . , , .



. ng-model, ng-repeat, inputs ng-repeat and databinding



ng-view

, , , ng-include.



ng-controller

( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



( , . . . Controller load order differs when loading or navigating )





( scope: false



) — , . , , , , , , . , .



scope: true



— , . ( DOM ) , . . . «» , ng-include ng-switch, .



scope: { ... }



— . . , , . . . , .



- ( «=») ( «@») . «&» . , , . ,

— -, . , parentProp



: {scope: localProp: '@parentProp' }



. : scope: { localProp: '@theParentProp' }



.



__proto__



Scope ( , «Scope» «Object»). $parent , , , .







<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







, : scope.someIsolateProp = "I'm isolated"







画像



: attrs.$observe('attr_name', function(value) { ... }



, «@». , — attrs.$observe('interpolated', function(value) { ... }



value



11. ( scope.interpolatedProp



. , scope.twowayBindingProp



, . . «=».)



onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









transclude: true



— «» , . , (. ., , ng-transclude) , $parent ,



( ) — $parent . , $$nextSibling .



. AngularJS two way binding not working in directive with transcluded scope



, : transclude: true







画像








showScope()



. .





:



— ng-include, ng-switch, ng-controller, scope: true



— ng-repeat. ng-repeat , . — scope: {...}



. , «=», «@», «&» . — transclude: true



. , - .

( ), - (. . ), $parent, $$childHead $$childTail.










  1. .



    / , :



    1. $parent.parentScopeProperty




    . .

    2. , , ( )





    , , .



    parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



    画像



    ( , , anArray



    , .)



    , parentScope, , , , , . ( parentScope, ... ). , :



    childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





    , :



    childScope.aString = 'child string'





    , aString childScope. parentScope . , ng-repeat ng-include .



    画像



    , :



    childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





    , (anArray anObject) childScope. parentScope, . childScope; . (, .)



    画像



    , :



    childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





    , , parentScope .



    画像



    :



    childScope.propertyX childScope propertyX, . childScope.propertyX, .

    :



    delete childScope.anArray childScope.anArray[1] === 22 // true





    childScope, , , .



    画像





    :



    , : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



    , transclude: true



    . , : scope: { ... }



    . «» .

    , , , .. scope: false



    .



    ng-include

    , :



    $scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





    HTML:



    <script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





    ng-include , .



    画像



    (, «77») , myPrimitive , .



    , , .



    画像



    (, «99») . tpl2.html , , ngModel MyObject — .



    画像



    : , «99» 11, 50.



    $parent, :



    <input ng-model="$parent.myPrimitive">





    (, «22») . ( $parent ,

    ).



    画像



    ( ), Angular - (. . ), $parent, $$childHead $$childTail . .



    , , . , , . ,



    // $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





    , « ». ( Stack Overflow .)



    . stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



    ng-switch

    ng-switch ng-include. , $parent , . .



    . AngularJS, bind scope of a switch-case?



    ng-repeat

    ng-repeat -. , :



    $scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





    HTML:



    <ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





    /, ng-repeat , , . ( .) ng-repeat:



    childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





    ( myArrayOfPrimitives), , . (. ., num



    , ng-model) . , ng-repeat , num



    , myArrayOfPrimitives:



    画像



    ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



    , ( ) . (. ., num



    , ng-model) . ng-repeat , :



    画像



    ( .)



    , . , , .



    . ng-model, ng-repeat, inputs ng-repeat and databinding



    ng-view

    , , , ng-include.



    ng-controller

    ( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



    ( , . . . Controller load order differs when loading or navigating )





    ( scope: false



    ) — , . , , , , , , . , .



    scope: true



    — , . ( DOM ) , . . . «» , ng-include ng-switch, .



    scope: { ... }



    — . . , , . . . , .



    - ( «=») ( «@») . «&» . , , . ,

    — -, . , parentProp



    : {scope: localProp: '@parentProp' }



    . : scope: { localProp: '@theParentProp' }



    .



    __proto__



    Scope ( , «Scope» «Object»). $parent , , , .







    <my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







    scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







    , : scope.someIsolateProp = "I'm isolated"







    画像



    : attrs.$observe('attr_name', function(value) { ... }



    , «@». , — attrs.$observe('interpolated', function(value) { ... }



    value



    11. ( scope.interpolatedProp



    . , scope.twowayBindingProp



    , . . «=».)



    onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









    transclude: true



    — «» , . , (. ., , ng-transclude) , $parent ,



    ( ) — $parent . , $$nextSibling .



    . AngularJS two way binding not working in directive with transcluded scope



    , : transclude: true







    画像








    showScope()



    . .





    :



    — ng-include, ng-switch, ng-controller, scope: true



    — ng-repeat. ng-repeat , . — scope: {...}



    . , «=», «@», «&» . — transclude: true



    . , - .

    ( ), - (. . ), $parent, $$childHead $$childTail.










  2. .



    / , :



    1. $parent.parentScopeProperty




    . .

    2. , , ( )





    , , .



    parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



    画像



    ( , , anArray



    , .)



    , parentScope, , , , , . ( parentScope, ... ). , :



    childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





    , :



    childScope.aString = 'child string'





    , aString childScope. parentScope . , ng-repeat ng-include .



    画像



    , :



    childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





    , (anArray anObject) childScope. parentScope, . childScope; . (, .)



    画像



    , :



    childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





    , , parentScope .



    画像



    :



    childScope.propertyX childScope propertyX, . childScope.propertyX, .

    :



    delete childScope.anArray childScope.anArray[1] === 22 // true





    childScope, , , .



    画像





    :



    , : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



    , transclude: true



    . , : scope: { ... }



    . «» .

    , , , .. scope: false



    .



    ng-include

    , :



    $scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





    HTML:



    <script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





    ng-include , .



    画像



    (, «77») , myPrimitive , .



    , , .



    画像



    (, «99») . tpl2.html , , ngModel MyObject — .



    画像



    : , «99» 11, 50.



    $parent, :



    <input ng-model="$parent.myPrimitive">





    (, «22») . ( $parent ,

    ).



    画像



    ( ), Angular - (. . ), $parent, $$childHead $$childTail . .



    , , . , , . ,



    // $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





    , « ». ( Stack Overflow .)



    . stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



    ng-switch

    ng-switch ng-include. , $parent , . .



    . AngularJS, bind scope of a switch-case?



    ng-repeat

    ng-repeat -. , :



    $scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





    HTML:



    <ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





    /, ng-repeat , , . ( .) ng-repeat:



    childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





    ( myArrayOfPrimitives), , . (. ., num



    , ng-model) . , ng-repeat , num



    , myArrayOfPrimitives:



    画像



    ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



    , ( ) . (. ., num



    , ng-model) . ng-repeat , :



    画像



    ( .)



    , . , , .



    . ng-model, ng-repeat, inputs ng-repeat and databinding



    ng-view

    , , , ng-include.



    ng-controller

    ( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



    ( , . . . Controller load order differs when loading or navigating )





    ( scope: false



    ) — , . , , , , , , . , .



    scope: true



    — , . ( DOM ) , . . . «» , ng-include ng-switch, .



    scope: { ... }



    — . . , , . . . , .



    - ( «=») ( «@») . «&» . , , . ,

    — -, . , parentProp



    : {scope: localProp: '@parentProp' }



    . : scope: { localProp: '@theParentProp' }



    .



    __proto__



    Scope ( , «Scope» «Object»). $parent , , , .







    <my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







    scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







    , : scope.someIsolateProp = "I'm isolated"







    画像



    : attrs.$observe('attr_name', function(value) { ... }



    , «@». , — attrs.$observe('interpolated', function(value) { ... }



    value



    11. ( scope.interpolatedProp



    . , scope.twowayBindingProp



    , . . «=».)



    onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









    transclude: true



    — «» , . , (. ., , ng-transclude) , $parent ,



    ( ) — $parent . , $$nextSibling .



    . AngularJS two way binding not working in directive with transcluded scope



    , : transclude: true







    画像








    showScope()



    . .





    :



    — ng-include, ng-switch, ng-controller, scope: true



    — ng-repeat. ng-repeat , . — scope: {...}



    . , «=», «@», «&» . — transclude: true



    . , - .

    ( ), - (. . ), $parent, $$childHead $$childTail.










  3. .



    / , :



    1. $parent.parentScopeProperty




    . .

    2. , , ( )





    , , .



    parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



    画像



    ( , , anArray



    , .)



    , parentScope, , , , , . ( parentScope, ... ). , :



    childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





    , :



    childScope.aString = 'child string'





    , aString childScope. parentScope . , ng-repeat ng-include .



    画像



    , :



    childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





    , (anArray anObject) childScope. parentScope, . childScope; . (, .)



    画像



    , :



    childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





    , , parentScope .



    画像



    :



    childScope.propertyX childScope propertyX, . childScope.propertyX, .

    :



    delete childScope.anArray childScope.anArray[1] === 22 // true





    childScope, , , .



    画像





    :



    , : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



    , transclude: true



    . , : scope: { ... }



    . «» .

    , , , .. scope: false



    .



    ng-include

    , :



    $scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





    HTML:



    <script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





    ng-include , .



    画像



    (, «77») , myPrimitive , .



    , , .



    画像



    (, «99») . tpl2.html , , ngModel MyObject — .



    画像



    : , «99» 11, 50.



    $parent, :



    <input ng-model="$parent.myPrimitive">





    (, «22») . ( $parent ,

    ).



    画像



    ( ), Angular - (. . ), $parent, $$childHead $$childTail . .



    , , . , , . ,



    // $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





    , « ». ( Stack Overflow .)



    . stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



    ng-switch

    ng-switch ng-include. , $parent , . .



    . AngularJS, bind scope of a switch-case?



    ng-repeat

    ng-repeat -. , :



    $scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





    HTML:



    <ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





    /, ng-repeat , , . ( .) ng-repeat:



    childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





    ( myArrayOfPrimitives), , . (. ., num



    , ng-model) . , ng-repeat , num



    , myArrayOfPrimitives:



    画像



    ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



    , ( ) . (. ., num



    , ng-model) . ng-repeat , :



    画像



    ( .)



    , . , , .



    . ng-model, ng-repeat, inputs ng-repeat and databinding



    ng-view

    , , , ng-include.



    ng-controller

    ( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



    ( , . . . Controller load order differs when loading or navigating )





    ( scope: false



    ) — , . , , , , , , . , .



    scope: true



    — , . ( DOM ) , . . . «» , ng-include ng-switch, .



    scope: { ... }



    — . . , , . . . , .



    - ( «=») ( «@») . «&» . , , . ,

    — -, . , parentProp



    : {scope: localProp: '@parentProp' }



    . : scope: { localProp: '@theParentProp' }



    .



    __proto__



    Scope ( , «Scope» «Object»). $parent , , , .







    <my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







    scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







    , : scope.someIsolateProp = "I'm isolated"







    画像



    : attrs.$observe('attr_name', function(value) { ... }



    , «@». , — attrs.$observe('interpolated', function(value) { ... }



    value



    11. ( scope.interpolatedProp



    . , scope.twowayBindingProp



    , . . «=».)



    onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









    transclude: true



    — «» , . , (. ., , ng-transclude) , $parent ,



    ( ) — $parent . , $$nextSibling .



    . AngularJS two way binding not working in directive with transcluded scope



    , : transclude: true







    画像








    showScope()



    . .





    :



    — ng-include, ng-switch, ng-controller, scope: true



    — ng-repeat. ng-repeat , . — scope: {...}



    . , «=», «@», «&» . — transclude: true



    . , - .

    ( ), - (. . ), $parent, $$childHead $$childTail.










    .



    / , :



    1. $parent.parentScopeProperty




    . .

    2. , , ( )





    , , .



    parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



    画像



    ( , , anArray



    , .)



    , parentScope, , , , , . ( parentScope, ... ). , :



    childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





    , :



    childScope.aString = 'child string'





    , aString childScope. parentScope . , ng-repeat ng-include .



    画像



    , :



    childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





    , (anArray anObject) childScope. parentScope, . childScope; . (, .)



    画像



    , :



    childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





    , , parentScope .



    画像



    :



    childScope.propertyX childScope propertyX, . childScope.propertyX, .

    :



    delete childScope.anArray childScope.anArray[1] === 22 // true





    childScope, , , .



    画像





    :



    , : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



    , transclude: true



    . , : scope: { ... }



    . «» .

    , , , .. scope: false



    .



    ng-include

    , :



    $scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





    HTML:



    <script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





    ng-include , .



    画像



    (, «77») , myPrimitive , .



    , , .



    画像



    (, «99») . tpl2.html , , ngModel MyObject — .



    画像



    : , «99» 11, 50.



    $parent, :



    <input ng-model="$parent.myPrimitive">





    (, «22») . ( $parent ,

    ).



    画像



    ( ), Angular - (. . ), $parent, $$childHead $$childTail . .



    , , . , , . ,



    // $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





    , « ». ( Stack Overflow .)



    . stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



    ng-switch

    ng-switch ng-include. , $parent , . .



    . AngularJS, bind scope of a switch-case?



    ng-repeat

    ng-repeat -. , :



    $scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





    HTML:



    <ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





    /, ng-repeat , , . ( .) ng-repeat:



    childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





    ( myArrayOfPrimitives), , . (. ., num



    , ng-model) . , ng-repeat , num



    , myArrayOfPrimitives:



    画像



    ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



    , ( ) . (. ., num



    , ng-model) . ng-repeat , :



    画像



    ( .)



    , . , , .



    . ng-model, ng-repeat, inputs ng-repeat and databinding



    ng-view

    , , , ng-include.



    ng-controller

    ( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



    ( , . . . Controller load order differs when loading or navigating )





    ( scope: false



    ) — , . , , , , , , . , .



    scope: true



    — , . ( DOM ) , . . . «» , ng-include ng-switch, .



    scope: { ... }



    — . . , , . . . , .



    - ( «=») ( «@») . «&» . , , . ,

    — -, . , parentProp



    : {scope: localProp: '@parentProp' }



    . : scope: { localProp: '@theParentProp' }



    .



    __proto__



    Scope ( , «Scope» «Object»). $parent , , , .







    <my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







    scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







    , : scope.someIsolateProp = "I'm isolated"







    画像



    : attrs.$observe('attr_name', function(value) { ... }



    , «@». , — attrs.$observe('interpolated', function(value) { ... }



    value



    11. ( scope.interpolatedProp



    . , scope.twowayBindingProp



    , . . «=».)



    onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









    transclude: true



    — «» , . , (. ., , ng-transclude) , $parent ,



    ( ) — $parent . , $$nextSibling .



    . AngularJS two way binding not working in directive with transcluded scope



    , : transclude: true







    画像








    showScope()



    . .





    :



    — ng-include, ng-switch, ng-controller, scope: true



    — ng-repeat. ng-repeat , . — scope: {...}



    . , «=», «@», «&» . — transclude: true



    . , - .

    ( ), - (. . ), $parent, $$childHead $$childTail.










    .



    / , :



    1. $parent.parentScopeProperty




    . .

    2. , , ( )





    , , .



    parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



    画像



    ( , , anArray



    , .)



    , parentScope, , , , , . ( parentScope, ... ). , :



    childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





    , :



    childScope.aString = 'child string'





    , aString childScope. parentScope . , ng-repeat ng-include .



    画像



    , :



    childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





    , (anArray anObject) childScope. parentScope, . childScope; . (, .)



    画像



    , :



    childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





    , , parentScope .



    画像



    :



    childScope.propertyX childScope propertyX, . childScope.propertyX, .

    :



    delete childScope.anArray childScope.anArray[1] === 22 // true





    childScope, , , .



    画像





    :



    , : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



    , transclude: true



    . , : scope: { ... }



    . «» .

    , , , .. scope: false



    .



    ng-include

    , :



    $scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





    HTML:



    <script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





    ng-include , .



    画像



    (, «77») , myPrimitive , .



    , , .



    画像



    (, «99») . tpl2.html , , ngModel MyObject — .



    画像



    : , «99» 11, 50.



    $parent, :



    <input ng-model="$parent.myPrimitive">





    (, «22») . ( $parent ,

    ).



    画像



    ( ), Angular - (. . ), $parent, $$childHead $$childTail . .



    , , . , , . ,



    // $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





    , « ». ( Stack Overflow .)



    . stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



    ng-switch

    ng-switch ng-include. , $parent , . .



    . AngularJS, bind scope of a switch-case?



    ng-repeat

    ng-repeat -. , :



    $scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





    HTML:



    <ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





    /, ng-repeat , , . ( .) ng-repeat:



    childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





    ( myArrayOfPrimitives), , . (. ., num



    , ng-model) . , ng-repeat , num



    , myArrayOfPrimitives:



    画像



    ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



    , ( ) . (. ., num



    , ng-model) . ng-repeat , :



    画像



    ( .)



    , . , , .



    . ng-model, ng-repeat, inputs ng-repeat and databinding



    ng-view

    , , , ng-include.



    ng-controller

    ( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



    ( , . . . Controller load order differs when loading or navigating )





    ( scope: false



    ) — , . , , , , , , . , .



    scope: true



    — , . ( DOM ) , . . . «» , ng-include ng-switch, .



    scope: { ... }



    — . . , , . . . , .



    - ( «=») ( «@») . «&» . , , . ,

    — -, . , parentProp



    : {scope: localProp: '@parentProp' }



    . : scope: { localProp: '@theParentProp' }



    .



    __proto__



    Scope ( , «Scope» «Object»). $parent , , , .







    <my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







    scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







    , : scope.someIsolateProp = "I'm isolated"







    画像



    : attrs.$observe('attr_name', function(value) { ... }



    , «@». , — attrs.$observe('interpolated', function(value) { ... }



    value



    11. ( scope.interpolatedProp



    . , scope.twowayBindingProp



    , . . «=».)



    onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









    transclude: true



    — «» , . , (. ., , ng-transclude) , $parent ,



    ( ) — $parent . , $$nextSibling .



    . AngularJS two way binding not working in directive with transcluded scope



    , : transclude: true







    画像








    showScope()



    . .





    :



    — ng-include, ng-switch, ng-controller, scope: true



    — ng-repeat. ng-repeat , . — scope: {...}



    . , «=», «@», «&» . — transclude: true



    . , - .

    ( ), - (. . ), $parent, $$childHead $$childTail.










    1. .



      / , :



      1. $parent.parentScopeProperty




      . .

      2. , , ( )





      , , .



      parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



      画像



      ( , , anArray



      , .)



      , parentScope, , , , , . ( parentScope, ... ). , :



      childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





      , :



      childScope.aString = 'child string'





      , aString childScope. parentScope . , ng-repeat ng-include .



      画像



      , :



      childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





      , (anArray anObject) childScope. parentScope, . childScope; . (, .)



      画像



      , :



      childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





      , , parentScope .



      画像



      :



      childScope.propertyX childScope propertyX, . childScope.propertyX, .

      :



      delete childScope.anArray childScope.anArray[1] === 22 // true





      childScope, , , .



      画像





      :



      , : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



      , transclude: true



      . , : scope: { ... }



      . «» .

      , , , .. scope: false



      .



      ng-include

      , :



      $scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





      HTML:



      <script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





      ng-include , .



      画像



      (, «77») , myPrimitive , .



      , , .



      画像



      (, «99») . tpl2.html , , ngModel MyObject — .



      画像



      : , «99» 11, 50.



      $parent, :



      <input ng-model="$parent.myPrimitive">





      (, «22») . ( $parent ,

      ).



      画像



      ( ), Angular - (. . ), $parent, $$childHead $$childTail . .



      , , . , , . ,



      // $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





      , « ». ( Stack Overflow .)



      . stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



      ng-switch

      ng-switch ng-include. , $parent , . .



      . AngularJS, bind scope of a switch-case?



      ng-repeat

      ng-repeat -. , :



      $scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





      HTML:



      <ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





      /, ng-repeat , , . ( .) ng-repeat:



      childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





      ( myArrayOfPrimitives), , . (. ., num



      , ng-model) . , ng-repeat , num



      , myArrayOfPrimitives:



      画像



      ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



      , ( ) . (. ., num



      , ng-model) . ng-repeat , :



      画像



      ( .)



      , . , , .



      . ng-model, ng-repeat, inputs ng-repeat and databinding



      ng-view

      , , , ng-include.



      ng-controller

      ( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



      ( , . . . Controller load order differs when loading or navigating )





      ( scope: false



      ) — , . , , , , , , . , .



      scope: true



      — , . ( DOM ) , . . . «» , ng-include ng-switch, .



      scope: { ... }



      — . . , , . . . , .



      - ( «=») ( «@») . «&» . , , . ,

      — -, . , parentProp



      : {scope: localProp: '@parentProp' }



      . : scope: { localProp: '@theParentProp' }



      .



      __proto__



      Scope ( , «Scope» «Object»). $parent , , , .







      <my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







      scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







      , : scope.someIsolateProp = "I'm isolated"







      画像



      : attrs.$observe('attr_name', function(value) { ... }



      , «@». , — attrs.$observe('interpolated', function(value) { ... }



      value



      11. ( scope.interpolatedProp



      . , scope.twowayBindingProp



      , . . «=».)



      onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









      transclude: true



      — «» , . , (. ., , ng-transclude) , $parent ,



      ( ) — $parent . , $$nextSibling .



      . AngularJS two way binding not working in directive with transcluded scope



      , : transclude: true







      画像








      showScope()



      . .





      :



      — ng-include, ng-switch, ng-controller, scope: true



      — ng-repeat. ng-repeat , . — scope: {...}



      . , «=», «@», «&» . — transclude: true



      . , - .

      ( ), - (. . ), $parent, $$childHead $$childTail.










    2. .



      / , :



      1. $parent.parentScopeProperty




      . .

      2. , , ( )





      , , .



      parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



      画像



      ( , , anArray



      , .)



      , parentScope, , , , , . ( parentScope, ... ). , :



      childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





      , :



      childScope.aString = 'child string'





      , aString childScope. parentScope . , ng-repeat ng-include .



      画像



      , :



      childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





      , (anArray anObject) childScope. parentScope, . childScope; . (, .)



      画像



      , :



      childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





      , , parentScope .



      画像



      :



      childScope.propertyX childScope propertyX, . childScope.propertyX, .

      :



      delete childScope.anArray childScope.anArray[1] === 22 // true





      childScope, , , .



      画像





      :



      , : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



      , transclude: true



      . , : scope: { ... }



      . «» .

      , , , .. scope: false



      .



      ng-include

      , :



      $scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





      HTML:



      <script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





      ng-include , .



      画像



      (, «77») , myPrimitive , .



      , , .



      画像



      (, «99») . tpl2.html , , ngModel MyObject — .



      画像



      : , «99» 11, 50.



      $parent, :



      <input ng-model="$parent.myPrimitive">





      (, «22») . ( $parent ,

      ).



      画像



      ( ), Angular - (. . ), $parent, $$childHead $$childTail . .



      , , . , , . ,



      // $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





      , « ». ( Stack Overflow .)



      . stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



      ng-switch

      ng-switch ng-include. , $parent , . .



      . AngularJS, bind scope of a switch-case?



      ng-repeat

      ng-repeat -. , :



      $scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





      HTML:



      <ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





      /, ng-repeat , , . ( .) ng-repeat:



      childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





      ( myArrayOfPrimitives), , . (. ., num



      , ng-model) . , ng-repeat , num



      , myArrayOfPrimitives:



      画像



      ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



      , ( ) . (. ., num



      , ng-model) . ng-repeat , :



      画像



      ( .)



      , . , , .



      . ng-model, ng-repeat, inputs ng-repeat and databinding



      ng-view

      , , , ng-include.



      ng-controller

      ( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



      ( , . . . Controller load order differs when loading or navigating )





      ( scope: false



      ) — , . , , , , , , . , .



      scope: true



      — , . ( DOM ) , . . . «» , ng-include ng-switch, .



      scope: { ... }



      — . . , , . . . , .



      - ( «=») ( «@») . «&» . , , . ,

      — -, . , parentProp



      : {scope: localProp: '@parentProp' }



      . : scope: { localProp: '@theParentProp' }



      .



      __proto__



      Scope ( , «Scope» «Object»). $parent , , , .







      <my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







      scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







      , : scope.someIsolateProp = "I'm isolated"







      画像



      : attrs.$observe('attr_name', function(value) { ... }



      , «@». , — attrs.$observe('interpolated', function(value) { ... }



      value



      11. ( scope.interpolatedProp



      . , scope.twowayBindingProp



      , . . «=».)



      onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









      transclude: true



      — «» , . , (. ., , ng-transclude) , $parent ,



      ( ) — $parent . , $$nextSibling .



      . AngularJS two way binding not working in directive with transcluded scope



      , : transclude: true







      画像








      showScope()



      . .





      :



      — ng-include, ng-switch, ng-controller, scope: true



      — ng-repeat. ng-repeat , . — scope: {...}



      . , «=», «@», «&» . — transclude: true



      . , - .

      ( ), - (. . ), $parent, $$childHead $$childTail.










    3. .



      / , :



      1. $parent.parentScopeProperty




      . .

      2. , , ( )





      , , .



      parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



      画像



      ( , , anArray



      , .)



      , parentScope, , , , , . ( parentScope, ... ). , :



      childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





      , :



      childScope.aString = 'child string'





      , aString childScope. parentScope . , ng-repeat ng-include .



      画像



      , :



      childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





      , (anArray anObject) childScope. parentScope, . childScope; . (, .)



      画像



      , :



      childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





      , , parentScope .



      画像



      :



      childScope.propertyX childScope propertyX, . childScope.propertyX, .

      :



      delete childScope.anArray childScope.anArray[1] === 22 // true





      childScope, , , .



      画像





      :



      , : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



      , transclude: true



      . , : scope: { ... }



      . «» .

      , , , .. scope: false



      .



      ng-include

      , :



      $scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





      HTML:



      <script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





      ng-include , .



      画像



      (, «77») , myPrimitive , .



      , , .



      画像



      (, «99») . tpl2.html , , ngModel MyObject — .



      画像



      : , «99» 11, 50.



      $parent, :



      <input ng-model="$parent.myPrimitive">





      (, «22») . ( $parent ,

      ).



      画像



      ( ), Angular - (. . ), $parent, $$childHead $$childTail . .



      , , . , , . ,



      // $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





      , « ». ( Stack Overflow .)



      . stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



      ng-switch

      ng-switch ng-include. , $parent , . .



      . AngularJS, bind scope of a switch-case?



      ng-repeat

      ng-repeat -. , :



      $scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





      HTML:



      <ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





      /, ng-repeat , , . ( .) ng-repeat:



      childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





      ( myArrayOfPrimitives), , . (. ., num



      , ng-model) . , ng-repeat , num



      , myArrayOfPrimitives:



      画像



      ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



      , ( ) . (. ., num



      , ng-model) . ng-repeat , :



      画像



      ( .)



      , . , , .



      . ng-model, ng-repeat, inputs ng-repeat and databinding



      ng-view

      , , , ng-include.



      ng-controller

      ( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



      ( , . . . Controller load order differs when loading or navigating )





      ( scope: false



      ) — , . , , , , , , . , .



      scope: true



      — , . ( DOM ) , . . . «» , ng-include ng-switch, .



      scope: { ... }



      — . . , , . . . , .



      - ( «=») ( «@») . «&» . , , . ,

      — -, . , parentProp



      : {scope: localProp: '@parentProp' }



      . : scope: { localProp: '@theParentProp' }



      .



      __proto__



      Scope ( , «Scope» «Object»). $parent , , , .







      <my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







      scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







      , : scope.someIsolateProp = "I'm isolated"







      画像



      : attrs.$observe('attr_name', function(value) { ... }



      , «@». , — attrs.$observe('interpolated', function(value) { ... }



      value



      11. ( scope.interpolatedProp



      . , scope.twowayBindingProp



      , . . «=».)



      onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









      transclude: true



      — «» , . , (. ., , ng-transclude) , $parent ,



      ( ) — $parent . , $$nextSibling .



      . AngularJS two way binding not working in directive with transcluded scope



      , : transclude: true







      画像








      showScope()



      . .





      :



      — ng-include, ng-switch, ng-controller, scope: true



      — ng-repeat. ng-repeat , . — scope: {...}



      . , «=», «@», «&» . — transclude: true



      . , - .

      ( ), - (. . ), $parent, $$childHead $$childTail.










    4. .



      / , :



      1. $parent.parentScopeProperty




      . .

      2. , , ( )





      , , .



      parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



      画像



      ( , , anArray



      , .)



      , parentScope, , , , , . ( parentScope, ... ). , :



      childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





      , :



      childScope.aString = 'child string'





      , aString childScope. parentScope . , ng-repeat ng-include .



      画像



      , :



      childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





      , (anArray anObject) childScope. parentScope, . childScope; . (, .)



      画像



      , :



      childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





      , , parentScope .



      画像



      :



      childScope.propertyX childScope propertyX, . childScope.propertyX, .

      :



      delete childScope.anArray childScope.anArray[1] === 22 // true





      childScope, , , .



      画像





      :



      , : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



      , transclude: true



      . , : scope: { ... }



      . «» .

      , , , .. scope: false



      .



      ng-include

      , :



      $scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





      HTML:



      <script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





      ng-include , .



      画像



      (, «77») , myPrimitive , .



      , , .



      画像



      (, «99») . tpl2.html , , ngModel MyObject — .



      画像



      : , «99» 11, 50.



      $parent, :



      <input ng-model="$parent.myPrimitive">





      (, «22») . ( $parent ,

      ).



      画像



      ( ), Angular - (. . ), $parent, $$childHead $$childTail . .



      , , . , , . ,



      // $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





      , « ». ( Stack Overflow .)



      . stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



      ng-switch

      ng-switch ng-include. , $parent , . .



      . AngularJS, bind scope of a switch-case?



      ng-repeat

      ng-repeat -. , :



      $scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





      HTML:



      <ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





      /, ng-repeat , , . ( .) ng-repeat:



      childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





      ( myArrayOfPrimitives), , . (. ., num



      , ng-model) . , ng-repeat , num



      , myArrayOfPrimitives:



      画像



      ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



      , ( ) . (. ., num



      , ng-model) . ng-repeat , :



      画像



      ( .)



      , . , , .



      . ng-model, ng-repeat, inputs ng-repeat and databinding



      ng-view

      , , , ng-include.



      ng-controller

      ( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



      ( , . . . Controller load order differs when loading or navigating )





      ( scope: false



      ) — , . , , , , , , . , .



      scope: true



      — , . ( DOM ) , . . . «» , ng-include ng-switch, .



      scope: { ... }



      — . . , , . . . , .



      - ( «=») ( «@») . «&» . , , . ,

      — -, . , parentProp



      : {scope: localProp: '@parentProp' }



      . : scope: { localProp: '@theParentProp' }



      .



      __proto__



      Scope ( , «Scope» «Object»). $parent , , , .







      <my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







      scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







      , : scope.someIsolateProp = "I'm isolated"







      画像



      : attrs.$observe('attr_name', function(value) { ... }



      , «@». , — attrs.$observe('interpolated', function(value) { ... }



      value



      11. ( scope.interpolatedProp



      . , scope.twowayBindingProp



      , . . «=».)



      onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









      transclude: true



      — «» , . , (. ., , ng-transclude) , $parent ,



      ( ) — $parent . , $$nextSibling .



      . AngularJS two way binding not working in directive with transcluded scope



      , : transclude: true







      画像








      showScope()



      . .





      :



      — ng-include, ng-switch, ng-controller, scope: true



      — ng-repeat. ng-repeat , . — scope: {...}



      . , «=», «@», «&» . — transclude: true



      . , - .

      ( ), - (. . ), $parent, $$childHead $$childTail.










    .



    / , :



    1. $parent.parentScopeProperty




    . .

    2. , , ( )





    , , .



    parentScope aString, aNumber, anArray, anObject, aFunction. childScope parentScope, :



    画像



    ( , , anArray



    , .)



    , parentScope, , , , , . ( parentScope, ... ). , :



    childScope.aString === 'parent string' childScope.anArray[1] === 20 childScope.anObject.property1 === 'parent prop1' childScope.aFunction() === 'parent output'





    , :



    childScope.aString = 'child string'





    , aString childScope. parentScope . , ng-repeat ng-include .



    画像



    , :



    childScope.anArray[1] = '22' childScope.anObject.property1 = 'child prop1'





    , (anArray anObject) childScope. parentScope, . childScope; . (, .)



    画像



    , :



    childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' }





    , , parentScope .



    画像



    :



    childScope.propertyX childScope propertyX, . childScope.propertyX, .

    :



    delete childScope.anArray childScope.anArray[1] === 22 // true





    childScope, , , .



    画像





    :



    , : ng-repeat, ng-include, ng-switch, ng-view, ng-controller, scope: true



    , transclude: true



    . , : scope: { ... }



    . «» .

    , , , .. scope: false



    .



    ng-include

    , :



    $scope.myPrimitive = 50; $scope.myObject = {aNumber: 11};





    HTML:



    <script type="text/ng-template" id="/tpl1.html"> <input ng-model="myPrimitive"> </script> <div ng-include src="'/tpl1.html'"></div> <script type="text/ng-template" id="/tpl2.html"> <input ng-model="myObject.aNumber"> </script> <div ng-include src="'/tpl2.html'"></div>





    ng-include , .



    画像



    (, «77») , myPrimitive , .



    , , .



    画像



    (, «99») . tpl2.html , , ngModel MyObject — .



    画像



    : , «99» 11, 50.



    $parent, :



    <input ng-model="$parent.myPrimitive">





    (, «22») . ( $parent ,

    ).



    画像



    ( ), Angular - (. . ), $parent, $$childHead $$childTail . .



    , , . , , . ,



    // $scope.setMyPrimitive = function(value) { $scope.myPrimitive = value; }





    , « ». ( Stack Overflow .)



    . stackoverflow.com/a/13782671/215945 github.com/angular/angular.js/issues/1267 .



    ng-switch

    ng-switch ng-include. , $parent , . .



    . AngularJS, bind scope of a switch-case?



    ng-repeat

    ng-repeat -. , :



    $scope.myArrayOfPrimitives = [ 11, 22 ]; $scope.myArrayOfObjects = [{num: 101}, {num: 202}]





    HTML:



    <ul> <li ng-repeat="num in myArrayOfPrimitives"> <input ng-model="num"> </li> <ul> <ul> <li ng-repeat="obj in myArrayOfObjects"> <input ng-model="obj.num"> </li> <ul>





    /, ng-repeat , , . ( .) ng-repeat:



    childScope = scope.$new(); // ... childScope[valueIdent] = value; // childScope





    ( myArrayOfPrimitives), , . (. ., num



    , ng-model) . , ng-repeat , num



    , myArrayOfPrimitives:



    画像



    ng-repeat ( ). Angular 1.0.2 , , , . Angular 1.0.3 +, . (. , .) , myArrayOfPrimitives, . , .



    , ( ) . (. ., num



    , ng-model) . ng-repeat , :



    画像



    ( .)



    , . , , .



    . ng-model, ng-repeat, inputs ng-repeat and databinding



    ng-view

    , , , ng-include.



    ng-controller

    ( ng-controller) , ng-include ng-switch, . « $scope» — onehungrymind.com/angularjs-sticky-notes-pt-1-architecture . .



    ( , . . . Controller load order differs when loading or navigating )





    ( scope: false



    ) — , . , , , , , , . , .



    scope: true



    — , . ( DOM ) , . . . «» , ng-include ng-switch, .



    scope: { ... }



    — . . , , . . . , .



    - ( «=») ( «@») . «&» . , , . ,

    — -, . , parentProp



    : {scope: localProp: '@parentProp' }



    . : scope: { localProp: '@theParentProp' }



    .



    __proto__



    Scope ( , «Scope» «Object»). $parent , , , .







    <my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2">







    scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' }







    , : scope.someIsolateProp = "I'm isolated"







    画像



    : attrs.$observe('attr_name', function(value) { ... }



    , «@». , — attrs.$observe('interpolated', function(value) { ... }



    value



    11. ( scope.interpolatedProp



    . , scope.twowayBindingProp



    , . . «=».)



    onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope









    transclude: true



    — «» , . , (. ., , ng-transclude) , $parent ,



    ( ) — $parent . , $$nextSibling .



    . AngularJS two way binding not working in directive with transcluded scope



    , : transclude: true







    画像








    showScope()



    . .





    :



    — ng-include, ng-switch, ng-controller, scope: true



    — ng-repeat. ng-repeat , . — scope: {...}



    . , «=», «@», «&» . — transclude: true



    . , - .

    ( ), - (. . ), $parent, $$childHead $$childTail.











All Articles