අපිරිසිදු $scope
වස්තුව පරීක්ෂා කිරීමෙන්
කෝණික array
මඟින් $scope
වස්තූන්හි මුරකරුවන් සරල ලෙස පවත්වා ගනී . ඔබ කිසියම් දෙයක් පරීක්ෂා කළහොත් $scope
එහි array
ඇමතුමක් ඇති බව ඔබට පෙනී යනු $$watchers
ඇත.
සෑම මුරකරුවෙකුම object
වෙනත් දේ අතර අඩංගු වේ
- මුරකරු නිරීක්ෂණය කරන ප්රකාශනයකි. මෙය
attribute
නමක් හෝ වඩාත් සංකීර්ණ දෙයක් විය හැකිය.
- ප්රකාශනයේ අවසාන දන්නා වටිනාකම. ප්රකාශනයේ වත්මන් ගණනය කළ අගයට සාපේක්ෂව මෙය පරීක්ෂා කළ හැකිය. අගයන් වෙනස් නම් මුරකරු ශ්රිතය අවුලුවන අතර එය
$scope
අපිරිසිදු ලෙස සලකුණු කරයි .
- මුරකරු අපිරිසිදු නම් එය ක්රියාත්මක කරනු ඇත.
මුරකරුවන් නිර්වචනය කරන්නේ කෙසේද
AngularJS හි මුරකරුවෙකු අර්ථ දැක්වීමට විවිධ ක්රම තිබේ.
ඔබ සුවිශේෂව හැකි $watch
වූ attribute
මත $scope
.
$scope.$watch('person.username', validateUnique);
{{}}
ඔබේ අච්චුව තුළ ඔබට අන්තර් සම්බන්ධතාවයක් තැබිය හැකිය (ධාරාව මත ඔබ වෙනුවෙන් මුරකරුවෙකු නිර්මාණය වනු ඇත $scope
).
<p>username: {{person.username}}</p>
ඔබ ng-model
වෙනුවෙන් මුරකරු නිර්වචනය කිරීම වැනි නියෝගයක් ඉල්ලා සිටිය හැකිය .
<input ng-model="person.username" />
මෙම $digest
චක්රය ඔවුන්ගේ අවසන් අගය එරෙහි සියලු නිරීක්ෂකයෝ පරික්ෂා
අපි සාමාන්ය නාලිකා (ng-model, ng-පුනරාවර්තනය, ආදිය) හරහා AngularJS සමඟ අන්තර්ක්රියා කරන විට, ඩයිජෙස්ට් චක්රයක් නියෝගයෙන් අවුලුවනු ඇත.
ඩයිජෙස්ට් චක්රයක් යනු එහි පළමු $scope
හා එහි සියලු දරුවන්ගේ ගැඹුරට ගමන් කිරීමයි . එක් එක් සඳහා $scope
object
, අපි එය ඉක්මවා නැවත $$watchers
array
සියලු ප්රකාශන ඇගයීමට ලක් කරමු. නව ප්රකාශන අගය අවසන් වරට දන්නා අගයට වඩා වෙනස් නම්, මුරකරුගේ ශ්රිතය හැඳින්වේ. මෙම ශ්රිතය DOM හි කොටසක් නැවත සකස් කිරීම, වටිනාකමක් නැවත ගණනය කිරීම $scope
, AJAX
request
ඔබට අවශ්ය ඕනෑම දෙයක් අවුලුවාලීම .
සෑම විෂය පථයක්ම ගමන් කරන අතර සෑම ඔරලෝසු ප්රකාශනයක්ම අවසාන අගයට සාපේක්ෂව ඇගයීමට ලක් කරනු ලැබේ.
මුරකරුවෙකු අවුලුවනු ලැබුවහොත් $scope
එය අපිරිසිදු ය
මුරකරුවෙකු අවුලුවනු ලැබුවහොත්, යමක් වෙනස් වී ඇති බව යෙදුම දනී, $scope
එය අපිරිසිදු ලෙස සලකුණු කර ඇත.
මුරකරුගේ ක්රියාකාරිත්වයන් $scope
දෙමව්පියන් මත හෝ වෙනත් ගුණාංග වෙනස් කළ හැකිය $scope
. එක් $watcher
ශ්රිතයක් අවුලුවනු ලැබුවහොත් , අපගේ අනෙක් $scope
ඒවා තවමත් පිරිසිදු බව අපට සහතික කළ නොහැක , එබැවින් අපි සම්පූර්ණ ඩයිජස්ට් චක්රය නැවත ක්රියාත්මක කරමු.
මෙයට හේතුව AngularJS සතුව ද්වි-මාර්ග බන්ධනයක් ඇති බැවින් දත්ත නැවත $scope
ගස වෙත යැවිය හැකිය . $scope
දැනටමත් ජීර්ණය කර ඇති ඉහළ අගයක් අපි වෙනස් කළ හැකිය . සමහර විට අපි එහි අගය වෙනස් කරමු $rootScope
.
නම් $digest
අපිරිසිදු වන අතර, අපි මුළු ක්රියාත්මක $digest
නැවත චක්රය
$digest
ඩයිජෙස්ට් චක්රය පිරිසිදුව පැමිණෙන තෙක් අපි නොකඩවා චක්රය හරහා ගමන් කරන්නෙමු (සියලුම $watch
ප්රකාශනවල පෙර චක්රයේ තිබූ අගයට සමාන අගයක් ඇත), නැතහොත් අපි ජීර්ණ සීමාවට ළඟා වෙමු. පෙරනිමියෙන්, මෙම සීමාව 10 ලෙස සකසා ඇත.
අප ජීර්ණ සීමාවට ළඟා වුවහොත් AngularJS කොන්සෝලය තුළ දෝෂයක් මතු කරයි:
10 $digest() iterations reached. Aborting!
ඩයිජෙස්ට් යන්ත්රය අමාරු නමුත් සංවර්ධකයාට පහසුය
ඔබට පෙනෙන පරිදි, AngularJS යෙදුමක යම් දෙයක් වෙනස් වන සෑම අවස්ථාවකම, AngularJS විසින් $scope
ධූරාවලියේ සෑම මුරකරුවෙකුම පරීක්ෂා කර ප්රතිචාර දක්වන්නේ කෙසේදැයි බැලීමට. සංවර්ධකයෙකු සඳහා මෙය දැවැන්ත tivity ලදායිතා වරප්රසාදයක් වන අතර, ඔබට දැන් රැහැන් කේතයක් ලිවීමට අවශ්ය නොවන බැවින්, අගයක් වෙනස් වී ඇත්දැයි AngularJS විසින් දකිනු ඇති අතර ඉතිරි යෙදුම වෙනස්වීමට අනුකූල වේ.
යන්ත්රයේ දෘෂ්ටි කෝණයෙන් බැලූ විට මෙය එතරම් අකාර්යක්ෂම වන අතර අප ඕනෑවට වඩා මුරකරුවන් නිර්මාණය කළහොත් අපගේ යෙදුම මන්දගාමී වනු ඇත. ඔබගේ යෙදුම පැරණි බ්රව්සර්වල මන්දගාමී බවක් දැනීමට පෙර මිස්කෝ මුරකරුවන් 4000 ක් පමණ උපුටා දක්වා ඇත.
උදාහරණයක් ලෙස ඔබ ng-repeat
විශාල ප්රමාණයක් ඉක්මවා ගියහොත් මෙම සීමාව ළඟා වීම පහසුය JSON
array
. මුරකරුවන් නිර්මාණය නොකර අච්චුවක් සම්පාදනය කිරීම සඳහා එක් වරක් බැඳීම වැනි අංග භාවිතා කරමින් ඔබට මෙය අවම කර ගත හැකිය.
ඕනෑවට වඩා මුරකරුවන් ඇතිවීම වළක්වා ගන්නේ කෙසේද
ඔබගේ පරිශීලකයා ඔබගේ යෙදුම සමඟ අන්තර්ක්රියා කරන සෑම අවස්ථාවකම, ඔබගේ යෙදුමේ සෑම මුරකරුවෙකුම අවම වශයෙන් එක් වරක්වත් ඇගයීමට ලක් කරනු ඇත. AngularJS යෙදුමක් ප්රශස්තිකරණය කිරීමේ විශාල කොටසක් වන්නේ ඔබේ $scope
ගසෙහි මුරකරුවන්ගේ සංඛ්යාව අඩු කිරීමයි . මෙය කිරීමට එක් පහසු ක්රමයක් වන්නේ එක් වරක් බැඳීමයි .
ඔබට කලාතුරකින් වෙනස් වන දත්ත තිබේ නම්, ඔබට එය බැඳ තැබිය හැක්කේ :: සින්ටැක්ස් භාවිතා කිරීමෙන් එක් වරක් පමණි:
<p>{{::person.username}}</p>
හෝ
<p ng-bind="::person.username"></p>
බන්ධනය අවුලුවනු ලබන්නේ අඩංගු අච්චුව විදැහුම් කර දත්ත පටවන විට පමණි $scope
.
ඔබට ng-repeat
බොහෝ අයිතම ඇති විට මෙය විශේෂයෙන් වැදගත් වේ.
<div ng-repeat="person in people track by username">
{{::person.username}}
</div>