অ্যাংুলারজেএস-এ নির্দেশমূলক সুযোগে '@' এবং '=' এর মধ্যে পার্থক্য কী?


1067

আমি বিষয়টিতে অ্যাঙ্গুলারজেএস ডকুমেন্টেশনটি মনোযোগ সহকারে পড়েছি এবং তারপরে একটি নির্দেশনা দিয়ে ফিড করেছি। এখানে বেহালার

এবং এখানে কিছু সম্পর্কিত স্নিপেটগুলি রয়েছে:

  • এইচটিএমএল থেকে :

    <pane bi-title="title" title="{{title}}">{{text}}</pane>
  • ফলক নির্দেশিকা থেকে:

    scope: { biTitle: '=', title: '@', bar: '=' },

আমি পাই না এমন বেশ কয়েকটি জিনিস রয়েছে:

  • কেন আমি ব্যবহার করতে হবে "{{title}}"সঙ্গে '@'এবং "title"সঙ্গে '='?
  • আমি কোনও বৈশিষ্ট্য দিয়ে আমার উপাদানটি সজ্জিত না করে, কী আমিও সরাসরি প্যারেন্ট স্কোপে অ্যাক্সেস করতে পারি?
  • ডকুমেন্টেশনটি বলে যে "প্রায়শই বিচ্ছিন্ন সুযোগ থেকে অভিব্যক্তি এবং অভিভাবকের স্কোপে ডেটা প্রেরণ করা বাঞ্ছনীয়" তবে দ্বি-দ্বি-বাঁধাইয়ের সাথেও এটি ঠিকঠাক কাজ করে বলে মনে হয়। কেন এক্সপ্রেশন রুট ভাল হবে?

আমি আরও একটি ফ্রিডল পেয়েছি যা প্রকাশের সমাধানটিও দেখায়: http://jsfiddle.net/maxisam/QrCXh/


18
ন্যায্য বিন্দু. গবেষণা এবং উত্তরগুলি সন্ধানের দক্ষতা গুরুত্বপূর্ণ।
জোনাথন


1
=দ্বিমুখী বাইন্ডিং সক্ষম করার জন্য সরল কথায় ডাইরেক্টিভ বিচ্ছিন্ন সুযোগে ব্যবহৃত হয় এবং @মডেলটি আপডেট হয় না, কেবল নির্দেশের স্কোপ মানগুলি আপডেট করে।
স্টিল

@Wewin jsfiddle.net/maxisam/QrCXh- এ আপনার ফিডাল কোডটি গুগলাপি - অজ্যাক্স জিপাপিস / এজ্যাক্স / লিবিস / অ্যানুলারজস / ১.৪.৮/ angular.min.js এর সাথে কাজ করে না কেন ? আপনার কোডটি কেবল তখনই কাজ করে যদি আমি আপনার সিডিএন
কোড.

আমি নীচে প্রচুর ভাল উত্তর দেখতে পাচ্ছি, তবে যে কেউ এই প্রশ্নের উত্তর দিয়ে সরকারী কৌণিক ডকুমেন্টেশনগুলিকে কোনও পয়েন্টার দিতে পারে?
জন হেন্কেল

উত্তর:


1151

আমাকে কেন ' @ ' দিয়ে "{{শিরোনাম}}" এবং ' = ' দিয়ে "শিরোনাম" ব্যবহার করতে হবে ?

@ ডিওএম বৈশিষ্ট্যের মূল্যায়িত মানের সাথে একটি স্থানীয় / নির্দেশিক স্কোপ সম্পত্তি যুক্ত করে । আপনি যদি ব্যবহার করেন title=title1বা title="title1", DOM বৈশিষ্ট্যের "শিরোনাম" এর মানটি কেবল স্ট্রিং title1। আপনি যদি ব্যবহার title="{{title}}"করেন তবে ডিওএম অ্যাট্রিবিউট "শিরোনাম" এর মান হ'ল ইন্টারপোল্টেড মান {{title}}, অতএব স্ট্রিংটি প্যারেন্ট স্কোপ সম্পত্তি "শিরোনাম" বর্তমানে সেট করা থাকবে। যেহেতু অ্যাট্রিবিউট মানগুলি সর্বদা স্ট্রিং থাকে, আপনি @ ব্যবহার করার সময় এই বৈশিষ্ট্যের জন্য সর্বদা স্ট্রিং মানটি দিয়ে শেষ করতে পারেন ।

= স্থানীয় / নির্দেশমূলক স্কোপ সম্পত্তিকে পিতামাতার স্কোপ সম্পত্তি হিসাবে আবদ্ধ করে । তাই সঙ্গে = , আপনি DOM গুণাবলীর মান যেমন পিতা বা মাতা মডেল / সুযোগ সম্পত্তি নাম ব্যবহার করুন। আপনি ={{}} এর সাথে এস ব্যবহার করতে পারবেন না ।

@ এর সাহায্যে আপনি এমন কিছু করতে পারেন title="{{title}} and then some"- {{শিরোনাম} inter ইন্টারপোল্টেড হয়, তারপরে স্ট্রিংটি "এবং তাদের কিছু" এর সাথে একত্রিত হয়। চূড়ান্ত সংক্ষিপ্ত স্ট্রিংটি স্থানীয় / নির্দেশিক স্কোপ সম্পত্তি কী পায় property (আপনি এটি = , কেবলমাত্র @ দিয়ে করতে পারবেন না )

@ এর সাথে attr.$observe('title', function(value) { ... })আপনার লিঙ্ক (আইএন) ফাংশনে যদি মানটি ব্যবহার করতে হয় তবে আপনাকে ব্যবহার করতে হবে । যেমন, if(scope.title == "...")আপনার প্রত্যাশার মতো কাজ করবে না। নোট করুন যে এর অর্থ আপনি কেবলমাত্র এই বৈশিষ্ট্যটিকে অবিচ্ছিন্নভাবে অ্যাক্সেস করতে পারবেন । আপনি যদি কোনও টেম্পলেটের মানটি ব্যবহার করেন তবে আপনাকে $ পর্যবেক্ষণ () ব্যবহার করার দরকার নেই। যেমন template: '<div>{{title}}</div>',।

সাথে = , আপনার $ পর্যবেক্ষণ ব্যবহার করার দরকার নেই।

আমি কোনও বৈশিষ্ট্য দিয়ে আমার উপাদানটি সজ্জিত না করে, কী আমিও সরাসরি প্যারেন্ট স্কোপে অ্যাক্সেস করতে পারি?

হ্যাঁ, তবে আপনি যদি কোনও বিচ্ছিন্ন সুযোগ ব্যবহার না করেন তবেই। আপনার নির্দেশ থেকে এই লাইনটি সরান

scope: { ... }

এবং তারপরে আপনার নির্দেশনা কোনও নতুন সুযোগ তৈরি করবে না। এটি প্যারেন্ট স্কোপ ব্যবহার করবে। তারপরে আপনি সরাসরি প্যারেন্ট স্কোপের সমস্ত বৈশিষ্ট্য অ্যাক্সেস করতে পারেন।

ডকুমেন্টেশনটি বলে যে "প্রায়শই বিচ্ছিন্ন স্কোপ থেকে একটি অভিব্যক্তির মাধ্যমে এবং প্যারেন্ট স্কোপে ডেটা প্রেরণ করা বাঞ্ছনীয়" তবে এটি দ্বিদ্বায়ী বাঁধাইয়ের সাথেও বেশ কার্যকর বলে মনে হচ্ছে। কেন এক্সপ্রেশন রুট ভাল হবে?

হ্যাঁ, দ্বি নির্দেশমূলক বাঁধাই স্থানীয় / নির্দেশিক সুযোগ এবং পিতামাত স্কোপকে ডেটা ভাগ করার অনুমতি দেয়। "এক্সপ্রেশন বাইন্ডিং" নির্দেশটি ডিওএম অ্যাট্রিবিউট দ্বারা সংজ্ঞায়িত একটি এক্সপ্রেশন (বা ফাংশন) কল করার অনুমতি দেয় - এবং আপনি এক্সপ্রেশন বা ফাংশনে আর্গুমেন্ট হিসাবে ডেটাও পাস করতে পারেন। সুতরাং, যদি আপনার পিতামাতার সাথে ডেটা ভাগ করার প্রয়োজন না হয় - আপনি কেবল পিতামাতার স্কোপে সংজ্ঞায়িত কোনও ফাংশন কল করতে চান - আপনি & সিনট্যাক্সটি ব্যবহার করতে পারেন ।

আরো দেখুন


1
হুহ, এটি একটি সত্যই অদ্ভুত আচরণ, বিশেষত যখন বিরক্তি ব্যবহার না করে এবং কেবল একটি স্ট্রিং পাস করার চেষ্টা করে। স্পষ্টতই টানার অনুরোধটি বিকাশমান বিল্ডগুলিতে মিশে গেছে এবং এটি 1.1.5 এবং 1.2.0 আরসি বিল্ডে রয়েছে। এই অত্যন্ত অনর্থক আচরণ স্থির করার জন্য তাদের ভাল!
ইব্রাহিম

50
'@' বা '=' লেখা এত বেশি পরিষ্কার হয় তবে "এভাল-ডোম" বা "পিতামাতার স্কোপ" বা অন্য কোনও মানব-পঠনযোগ্য পাঠ্য লেখা হয়। ভাল ডিজাইনের সিদ্ধান্ত।
ডেন

13
@('at') 'এটিট্রিবিউট' এর মানটি অনুলিপি করে। =('সমান') বলতে চাওয়াটি আপনার অভিব্যক্তির সমান saying এটি, অন্ততপক্ষে, আমি কীভাবে তাদেরকে সঙ্কীর্ণ রাখি।
ম্যাট ডেক্রে

1
আপনি কি নিশ্চিত যে = কেবল পিতামাতাদের স্কোপ বৈশিষ্ট্যের জন্য? যে কোনও অভিব্যক্তিটি কাজ করে বলে মনে হচ্ছে - কেবল পিতামাতার স্কোপ বৈশিষ্ট্য নয়।
জোনাথন

4
@ জোনাথান অ্যাকুইনো, হ্যাঁ এটি কার্যকর হয় তবে @ এর সাথে আরও উপযুক্ত হবে - সহ foo="{{1+1}}"- কারণ আমাদের এখানে দ্বি-মুখী ডেটা বাঁধাইয়ের দরকার নেই। উপরের মন্তব্যে আমি যে বক্তব্যটি চেষ্টা করার চেষ্টা করেছি তা হ'ল আমাদের কেবল = ব্যবহার করা উচিত যখন যখন নির্দেশকের দ্বি-মুখী ডেটা বাঁধাইয়ের দরকার হয়। @ বা অন্যথায় ব্যবহার করুন।
রাজকক

542

সেখানে মহান উত্তর অনেক এখানে আছেন, কিন্তু আমি মধ্যে পার্থক্য আমার দৃষ্টিকোণ দিতে চাই @, =এবং &বাঁধাই আমার জন্য দরকারী প্রমাণ।

সমস্ত তিনটি বাইন্ডিংগুলি হ'ল উপাদানটির বৈশিষ্ট্যগুলির মাধ্যমে আপনার পিতামাতার সুযোগ থেকে আপনার নির্দেশকের বিচ্ছিন্ন স্কোপে ডেটা প্রেরণের উপায়:

  1. @ বাইন্ডিং স্ট্রিং পাস করার জন্য। এই স্ট্রিংগুলি {{}}আন্তঃবিবাহিত মানগুলির জন্য এক্সপ্রেশনকে সমর্থন করে। উদাহরণ স্বরূপ: . ইন্টারপোল্টেড এক্সপ্রেশনটি নির্দেশকের পিতামাতার সুযোগের বিরুদ্ধে মূল্যায়ন করা হয়।

  2. = বাইন্ডিং দ্বিমুখী মডেল বাইন্ডিংয়ের জন্য। অভিভাবকের স্কোপের মডেলটি নির্দেশকের বিচ্ছিন্ন সুযোগে মডেলের সাথে যুক্ত। একটি মডেলের পরিবর্তনগুলি অন্যকে প্রভাবিত করে এবং বিপরীতে।

  3. & বাধ্যতামূলক হ'ল কোনও নির্দেশকে আপনার নির্দেশকের স্কোপে প্রবেশ করার জন্য যাতে এটি আপনার নির্দেশের মধ্যে ডাকতে পারে। পদ্ধতিটি নির্দেশকের পিতামাত স্কোপের প্রাক-আবদ্ধ এবং যুক্তি সমর্থন করে। উদাহরণস্বরূপ, যদি পদ্ধতিটি প্যারেন্ট স্কোপটিতে হ্যালো (নাম) হয় তবে আপনার নির্দেশের অভ্যন্তর থেকে পদ্ধতিটি সম্পাদনের জন্য আপনাকে অবশ্যই $ সুযোগ.হেলো ({নাম: 'বিশ্ব'}) কল করতে হবে

আমি দেখতে পেয়েছি যে সংক্ষিপ্ত বর্ণনার দ্বারা স্কোপ বাইন্ডিংগুলিকে উল্লেখ করে এই পার্থক্যগুলি মনে রাখা সহজ:

  • @ অ্যাট্রিবিউট স্ট্রিং বাইন্ডিং
  • = দ্বিমুখী মডেল বাইন্ডিং
  • & কলব্যাক পদ্ধতির বাইন্ডিং

চিহ্নগুলি এটিকে আরও স্পষ্ট করে তোলে যে স্কোপ ভেরিয়েবল আপনার নির্দেশনার বাস্তবায়নের অভ্যন্তরে কী উপস্থাপন করে:

  • @ দড়ি
  • = মডেল
  • & পদ্ধতি

দরকারীতার জন্য (যাই হোক আমার জন্য):

  1. =
  2. @
  3. &

13
প্রকৃতপক্ষে, "&"ফর্মটির যুক্তিগুলি (বা বরং স্থানীয়) সমর্থন করে: callback({foo: "some value"})যা তখন ব্যবহার করা যেতে পারে <my-dir callback="doSomething(foo)">। অন্যথায়, ভাল উত্তর
নতুন দেব

11
উত্তর গ্রহণ করা উচিত। এখানে একই তথ্য সহ একটি সংক্ষিপ্ত নিবন্ধ দেওয়া হয়েছে, তবে যুক্ত কোড উদাহরণ সহ: umur.io/…
কেভিন

4
& "কলব্যাক পদ্ধতি বাঁধাই" নয়, এটি কৌণিক এক্সপ্রেশন বাঁধাই। একটি বিশেষ তবে একমাত্র উদাহরণটি হ'ল প্রকাশ নয় callback(argument)। যা এখনও callbackনিজের মতো হয় নি।
দিমিত্রি জায়তসেভ

14
আমি যখন উচ্চ র‌্যাঙ্কিংয়ের উত্তরটি কতটা সঠিক তা পছন্দ করেছিলাম, তবে আমি পেয়েছি এটি একটি আরও কার্যকর প্রভাব ফেলেছে এবং এই উত্তরটি পড়ার পরে আমি পূর্ববর্তী উত্তরটি আরও অনেক কিছু বুঝতে পেরেছি।
rbnzdave

1
আমি উপরের মন্তব্যের সাথে একমত, এই উত্তরটি আরও সুস্পষ্ট, সংজ্ঞাযুক্ত এবং প্রশ্নের পক্ষে কার্যকর। এটি পর্যাপ্ত বিশদ সহ ব্যাখ্যা করে যে আপনি যেতে এবং তথ্য ব্যবহার করতে পারেন।
ব্যবহারকারী3125823

64

এর =অর্থ দ্বি-দিকনির্দেশক বাধ্যবাধকতা, সুতরাং পিতামাতার স্কোপের ক্ষেত্রে একটি চলকের একটি উল্লেখ। এর অর্থ, আপনি যখন নির্দেশকে পরিবর্তনশীল পরিবর্তন করবেন তখন এটি প্যারেন্ট স্কোপটিতেও পরিবর্তিত হবে।

@ এর অর্থ চলকটি নির্দেশিকায় অনুলিপি করা (ক্লোন করা) হবে।

যতদূর আমি জানি, <pane bi-title="{{title}}" title="{{title}}">{{text}}</pane>খুব কাজ করা উচিত। bi-titleপ্যারেন্ট স্কোপ ভেরিয়েবল মান পাবেন, যা নির্দেশে পরিবর্তিত হতে পারে।

যদি আপনাকে প্যারেন্ট স্কোপটিতে বেশ কয়েকটি ভেরিয়েবল পরিবর্তন করতে হয় তবে আপনি নির্দেশের মধ্যে থেকেই প্যারেন্ট স্কোপে একটি ফাংশন কার্যকর করতে পারেন (বা কোনও পরিষেবার মাধ্যমে ডেটা পাস করতে পারেন)।


1
হ্যাঁ, আমি যে অংশটি পেয়েছি, প্রশ্নটির শিহরণটি দেখুন। তবে যে অংশগুলি অস্পষ্ট তা সম্পর্কে কী?
iwein

4
জিনিসটি হ'ল {{}} = দিয়ে কাজ করে না। = মূল্যায়ন করা হয় নি, তবে স্ট্রিংটি সম্পত্তি নাম হিসাবে নেওয়া হয়। উত্তরের জন্য ধন্যবাদ!
আইভেন

1
আমি মনে করি না যে = কেবল পিতামাতার স্কোপে পরিবর্তনের জন্য। এটি যে কোনও এক্সপ্রেশন দিয়ে কাজ করে (উদাঃ, 1 + 1)।
জনাথন অ্যাকিনো

1
@ জোনাথান অ্যাকুইনো আপনি ঠিক বলেছেন যে এটি প্রকাশের মূল্যায়ন করে। ইমো এটি আসলেই অদ্ভুত এবং আমি সেভাবে এটি ব্যবহার করব না। এটি এই ধরণের চালাক কৌশল যা আমার পক্ষে প্রথম স্থানে বোঝার পক্ষে নির্দেশমূলক স্কোপগুলি এত শক্ত করে তোলে।
iwein

1
আমি কি একমাত্র এই উত্তরটি ভুল বলে মনে করি! '=' এর অর্থ কৌনিকটি জাভাস্ক্রিপ্টের এক্সপ্রেশনটি প্রত্যাশা করে এবং যদি স্কোপ ভেরিয়েবলটি পাস করা হয় তবে একটি দ্বিদলিত ম্যাপিং করবে। যদিও @ এর অর্থ কৌনিকটি একটি স্ট্রিং এবং এটি সমস্ত কিছুর প্রত্যাশা করে। প্রকৃতপক্ষে, এটি সত্য যে আপনি @ {{} comb এর সাথে সংযুক্তিতে ব্যবহার করলে আপনি ভেরিয়েবলের মান ক্লোন করতে পারবেন। তবে এটি @ এর সংজ্ঞা নয়!
লুস দুজন

39

আপনি যদি দেখতে চান তবে এটি কীভাবে জীবন্ত উদাহরণ সহ কাজ করে। http://jsfiddle.net/juanmendez/k6chmnch/

var app = angular.module('app', []);
app.controller("myController", function ($scope) {
    $scope.title = "binding";
});
app.directive("jmFind", function () {
    return {
        replace: true,
        restrict: 'C',
        transclude: true,
        scope: {
            title1: "=",
            title2: "@"
        },
        template: "<div><p>{{title1}} {{title2}}</p></div>"
    };
});

2
প্রশ্ন এবং শীর্ষ উত্তরের সাথে লিঙ্কযুক্ত বেশ কয়েকটি উদাহরণ রয়েছে। এটি কী যুক্ত করে?
iwein

10
@ আমি, এটি স্পষ্টতা যোগ করে। আমি যদি পূর্ণ বৈশিষ্ট্যযুক্ত উদাহরণগুলি বুঝতে ও আত্মস্থ করতে পারি তবে আমার এই সাইটের প্রয়োজন হবে না।
টনি এনিস

3
জুয়ান, আপনার টাইপস ঠিক করতে পারেন? 'ট্রান্সক্র্লেড' ভুল বানানযুক্ত। আরও ভাল, এটিকে (এবং 'প্রতিস্থাপনের মতো' সমস্ত কিছু) মুছে ফেলুন যা সমস্যার ক্ষেত্রে সরাসরি অবদান রাখে না তাই আপনার সমাধানটি আরও সহজ এবং পরিষ্কার। উদাহরণস্বরূপ +1।
টনি এনিস

সম্পাদনা করার জন্য আপনাকে @ অনিকিসলামআবি ধন্যবাদ। আমি আরও বেশি অবদান রাখতে চাই এবং আমার নমুনাগুলি সহায়ক বলে আমি খুশি। এটাই মূল উদ্দেশ্য।
হুয়ান মেন্ডেজ

অসম্পূর্ণ উদাহরণ। আপনার প্রদর্শনীতে আপনি কেবল দ্বি-দিকীয় মান পরিবর্তন করছেন। আপনি এমনকি এমন মান পরিবর্তন করার চেষ্টা করছেন না যা বিচ্ছিন্ন সুযোগ রয়েছে। সুতরাং, নির্দেশিকাতে স্কোপ কীভাবে কাজ করে তা সঠিকভাবে প্রমাণিত হয় না।
সুদর্শন_এসএমডি

38

@ স্ট্রিং হিসাবে পেতে

  • এটি যে কোনও বাঁধাই তৈরি করে না। আপনি কেবল স্ট্রিং হিসাবে যে শব্দটি পাস করেছেন তা পেয়ে যাচ্ছেন

= 2 উপায় বাঁধাই

  • নিয়ন্ত্রক থেকে করা পরিবর্তনগুলি নির্দেশের অধীনে থাকা রেফারেন্সে এবং তার বিপরীতে প্রতিফলিত হবে

&এটি কিছুটা আলাদাভাবে আচরণ করে, কারণ সুযোগটি এমন একটি ফাংশন পায় যা .ুকে দেওয়া বস্তুটিকে ফেরত দেয় । আমি ধরে নিচ্ছি এটি কাজ করার জন্য এটি প্রয়োজনীয় ছিল। বেহালার বিষয়টি পরিষ্কার করা উচিত।

  • এই গেটর ফাংশনটি কল করার পরে, ফলস্বরূপ অবজেক্টটি নিম্নরূপ আচরণ করে:
    • যদি একটি ফাংশন পাস হয়ে যায়: তবে ফাংশনটি যখন ডাকা হয় তখন প্যারেন্ট (নিয়ন্ত্রণকারী) বন্ধে কার্যকর করা হয়
    • যদি কোনও নন-ফাংশনটি পাস করা হয়: কেবল অবজেক্টের একটি স্থানীয় অনুলিপি পান যার কোনও বাইন্ডিং নেই


তারা কীভাবে কাজ করে তা এই ফ্রিডালটিকে দেখানো উচিতget...নাম নিয়ে স্কোপ ফাংশনগুলিতে বিশেষ মনোযোগ দিন আশা করি আমি কী বোঝাতে চাইছি তা আরও ভাল করে বুঝতে&


36

নির্দেশিকায় তিনটি উপায় যুক্ত করা যেতে পারে:

  1. মূল স্কোপ : এটি ডিফল্ট স্কোপ উত্তরাধিকার।

নির্দেশিকা এবং এর পিতামাতার (নিয়ন্ত্রণকারী / নির্দেশিকা যার ভিতরে এটি থাকে) স্কোপ একই is নির্দেশের অভ্যন্তরে স্কোপ ভেরিয়েবলগুলিতে করা কোনও পরিবর্তন পিতামাতার নিয়ামককেও প্রতিফলিত করে। এটি ডিফল্ট হিসাবে আপনাকে নির্দিষ্ট করার দরকার নেই।

  1. সন্তানের সুযোগ : নির্দেশিকা একটি বাচ্চার সুযোগ তৈরি করে যা মূল নির্দেশের স্কোপ ভেরিয়েবলটিকে সত্য হিসাবে নির্দিষ্ট করে থাকলে পিতামাতার সুযোগ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয়।

এখানে, যদি আপনি নির্দেশের ভিতরে স্কোপ ভেরিয়েবলগুলি পরিবর্তন করেন তবে এটি প্যারেন্ট স্কোপে প্রতিফলিত করবে না, তবে আপনি যদি স্কোপ ভেরিয়েবলের সম্পত্তি পরিবর্তন করেন তবে এটি প্যারেন্ট স্কোপটিতে প্রতিফলিত হবে, আপনি প্রকৃতপক্ষে পিতামাতার স্কোপ ভেরিয়েবল পরিবর্তন করেছেন as ।

উদাহরণ,

app.directive("myDirective", function(){

    return {
        restrict: "EA",
        scope: true,
        link: function(element, scope, attrs){
            scope.somvar = "new value"; //doesnot reflect in the parent scope
            scope.someObj.someProp = "new value"; //reflects as someObj is of parent, we modified that but did not override.
        }
    };
});
  1. বিচ্ছিন্ন সুযোগ : আপনি যখন এমন স্কোপ তৈরি করতে চান যা নিয়ামকের সুযোগ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয় না তখন এটি ব্যবহৃত হয়।

আপনি যখন প্লাগইনগুলি তৈরি করছেন তখন এটি ঘটে যখন এটি কোনও নির্দেশকে জেনেরিক করে তোলে কারণ এটি কোনও HTML এ স্থাপন করা যেতে পারে এবং এর মূল স্কোপ দ্বারা প্রভাবিত হয় না।

এখন, আপনি যদি প্যারেন্ট স্কোপের সাথে কোনও ইন্টারঅ্যাকশন না চান তবে আপনি খালি অবজেক্ট হিসাবে কেবল সুযোগটি নির্দিষ্ট করতে পারেন। মত,

scope: {} //this does not interact with the parent scope in any way

মূলত এটি ক্ষেত্রে হয় না কারণ পিতামাতার সুযোগের সাথে আমাদের কিছু মিথস্ক্রিয়া দরকার, তাই আমরা কিছু মান / পরিবর্তনগুলির মধ্য দিয়ে যেতে চাই। এই কারণে, আমরা ব্যবহার:

1. "@"   (  Text binding / one-way binding )
2. "="   ( Direct model binding / two-way binding )
3. "&"   ( Behaviour binding / Method binding  )

@ অর্থ হ'ল নিয়ামক স্কোপ থেকে পরিবর্তনগুলি দিকনির্দেশক স্কোপে প্রতিফলিত হবে তবে আপনি যদি নির্দেশের স্কোপে মানটি পরিবর্তন করেন তবে নিয়ামক স্কোপ ভেরিয়েবল প্রভাবিত হবে না।

@ সর্বদা ম্যাপযুক্ত বৈশিষ্ট্যটি একটি অভিব্যক্তি হিসাবে প্রত্যাশা করে। এই অত্যন্ত গুরুত্বপূর্ণ; "@" উপসর্গটি কাজ করার জন্য, আমাদের {{}} এর মধ্যে গুণকের মানটি মোড়ানো দরকার}

= দ্বি নির্দেশমূলক তাই আপনি যদি নির্দেশের স্কোপে পরিবর্তনশীল পরিবর্তন করেন তবে নিয়ামক স্কোপ ভেরিয়েবলটিও প্রভাবিত হবে

এবং নিয়ামক স্কোপ পদ্ধতি বাঁধতে ব্যবহৃত হয় যাতে প্রয়োজন হলে আমরা নির্দেশ থেকে এটি কল করতে পারি

এখানে সুবিধাটি হ'ল নিয়ামক স্কোপ এবং নির্দেশের সুযোগের ক্ষেত্রে ভেরিয়েবলের নাম একই হওয়া উচিত নয়।

উদাহরণস্বরূপ, নির্দেশের স্কোপটিতে একটি পরিবর্তনশীল "dirVar" থাকে যা নিয়ামক স্কোপের ভেরিয়েবল "কনটওয়ার" এর সাথে সিঙ্ক হয়। এটি নির্দেশকে প্রচুর শক্তি এবং সাধারণীকরণ দেয় কারণ একটি নিয়ামক ভেরিয়েবল ভি 1 এর সাথে সিঙ্ক করতে পারে অন্য একই কন্ট্রোলার ব্যবহার করে নিয়ামক দিরওয়ারকে ভেরিয়েবল ভি 2 এর সাথে সিঙ্ক করতে অনুরোধ করতে পারে।

নীচে ব্যবহারের উদাহরণ:

নির্দেশিকা এবং নিয়ামক হ'ল:

 var app = angular.module("app", []);
 app.controller("MainCtrl", function( $scope ){
    $scope.name = "Harry";
    $scope.color = "#333333";
    $scope.reverseName = function(){
     $scope.name = $scope.name.split("").reverse().join("");
    };
    $scope.randomColor = function(){
        $scope.color = '#'+Math.floor(Math.random()*16777215).toString(16);
    };
});
app.directive("myDirective", function(){
    return {
        restrict: "EA",
        scope: {
            name: "@",
            color: "=",
            reverse: "&"
        },
        link: function(element, scope, attrs){
           //do something like
           $scope.reverse(); 
          //calling the controllers function
        }
    };
});

এবং এইচটিএমএল (@ এবং = এর জন্য পার্থক্যটি নোট করুন):

<div my-directive
  class="directive"
  name="{{name}}"
  reverse="reverseName()"
  color="color" >
</div>

এখানে ব্লগের একটি লিঙ্ক রয়েছে যা এটি সুন্দরভাবে বর্ণনা করে।


& না "আচরণ বাঁধাই" বা "পদ্ধতি বাঁধাই" নয়, এটি কৌণিক এক্সপ্রেশন বাইন্ডিং।
দিমিত্রি জইতসেভ

20

কেবলমাত্র আমরা ব্যবহার করতে পারি:

  1. @ : - স্ট্রিং মানগুলির একতরফা ডেটা বাঁধাইয়ের জন্য। এক উপায়ে ডেটা বাইন্ডিং আপনি কেবল স্কোপ মানকে নির্দেশের দিকে যেতে পারেন

  2. = : - দ্বিমুখী ডেটা বাঁধাইয়ের জন্য অবজেক্ট মানের জন্য। দ্বি-উপায়ে ডেটা বাইন্ডিংয়ে আপনি স্কোপের মানটি নির্দেশের পাশাপাশি এইচটিএমএলও পরিবর্তন করতে পারেন।

  3. এবং : - পদ্ধতি এবং কার্যাদি জন্য।

সম্পাদনা

কৌণিক সংস্করণ 1.5 এবং এর জন্য আমাদের উপাদান সংজ্ঞায় চারটি পৃথক ধরণের বাইন্ডিং রয়েছে:

  1. = দ্বিমুখী ডেটা বাইন্ডিং : - আমরা যদি মানটি পরিবর্তন করি তবে এটি স্বয়ংক্রিয়ভাবে আপডেট হয়
  2. < ওয়ান ওয়ে বাইন্ডিং : - যখন আমরা কেবল প্যারেন্টার স্কোপ থেকে প্যারামিটারটি পড়তে চাই এবং আপডেট না করি।

  3. @এটি স্ট্রিং পরামিতিগুলির জন্য

  4. &এটি কলব্যাক্সের ক্ষেত্রে যখন আপনার উপাদানটির কিছু অভিভাবকত্বের আউটপুট প্রয়োজন


13

আমি একটি সামান্য এইচটিএমএল ফাইল তৈরি করেছি যার মধ্যে কৌনিক কোড রয়েছে যা তাদের মধ্যে পার্থক্যগুলি দেখায়:

<!DOCTYPE html>
<html>
  <head>
    <title>Angular</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
  </head>
  <body ng-app="myApp">
    <div ng-controller="myCtrl as VM">
      <a my-dir
        attr1="VM.sayHi('Juan')" <!-- scope: "=" -->
        attr2="VM.sayHi('Juan')" <!-- scope: "@" -->
        attr3="VM.sayHi('Juan')" <!-- scope: "&" -->
      ></a>
    </div>
    <script>
    angular.module("myApp", [])
    .controller("myCtrl", [function(){
      var vm = this;
      vm.sayHi = function(name){
        return ("Hey there, " + name);
      }
    }])
    .directive("myDir", [function(){
      return {
        scope: {
          attr1: "=",
          attr2: "@",
          attr3: "&"
        },
        link: function(scope){
          console.log(scope.attr1);   // =, logs "Hey there, Juan"
          console.log(scope.attr2);   // @, logs "VM.sayHi('Juan')"
          console.log(scope.attr3);   // &, logs "function (a){return h(c,a)}"
          console.log(scope.attr3()); // &, logs "Hey there, Juan"
        }
      }
    }]);
    </script>
  </body>
</html>

6

= উপায় 2-উপায় বাঁধাই , আপনি আছে দেয় যা লাইভ আপনার নির্দেশ ভিতরে পরিবর্তন। যখন কেউ নির্দেশের বাইরে সেই পরিবর্তনশীল পরিবর্তন করে, আপনার নির্দেশকের অভ্যন্তরে সেই পরিবর্তনকৃত ডেটা থাকবে তবে @ উপায় দ্বি-উপায় বাঁধাই নয় । এটি টেক্সটের মতো কাজ করে । আপনি একবার বাঁধাই করুন, এবং আপনার কেবল তার মূল্য থাকবে।

এটি আরও স্পষ্টভাবে পেতে, আপনি এই দুর্দান্ত নিবন্ধটি ব্যবহার করতে পারেন:

কৌণিক জেএস নির্দেশিকা সুযোগ '@' এবং '='


6

এই প্রশ্নটি ইতিমধ্যে মেরে ফেলা হয়েছে, তবে অ্যাঙ্গুলারজেএস স্কোপস যে ভয়াবহ গণ্ডগোলের সাথে অন্য কেউ লড়াই করছে সে ক্ষেত্রে আমি যেভাবেই হোক এটিকে ভাগ করব। এই ইচ্ছার কভার =, <, @, &এবং ::। সম্পূর্ণ লেখা আপ এখানে পাওয়া যাবে


=দ্বিপথ বাঁধাই স্থাপন করে। পিতামাতার সম্পত্তি পরিবর্তন করার ফলে সন্তানের পরিবর্তন হতে পারে এবং এর বিপরীতে।


<সন্তানের কাছে পিতা-মাতার এক উপায় বাঁধাই করে। পিতামাতার সম্পত্তি পরিবর্তনের ফলে সন্তানের পরিবর্তন হবে তবে সন্তানের সম্পত্তি পরিবর্তনের ফলে পিতামাতার সম্পত্তি প্রভাবিত হবে না।


@সন্তানের সম্পত্তিতে ট্যাগ বৈশিষ্ট্যের স্ট্রিং মান নির্ধারণ করা হবে। যদি গুনটিতে কোনও অভিব্যক্তি থাকে তবে অভিব্যক্তিটি যখন কোনও স্ট্রিংয়ের মূল্যায়ন করে তখনই শিশু সম্পত্তি আপডেট হয়। উদাহরণ স্বরূপ:

<child-component description="The movie title is {{$ctrl.movie.title}}" />
bindings: {
    description: '@', 
}

এখানে, descriptionসন্তানের ক্ষেত্রের সম্পত্তিটি হ'ল অভিব্যক্তির বর্তমান মান "The movie title is {{$ctrl.movie.title}}", যেখানে movieপ্যারেন্ট স্কোপের কোনও অবজেক্ট।


&কিছুটা জটিল এবং বাস্তবে এটি ব্যবহার করার মতো কোনও বাধ্য করার কারণ নেই বলে মনে হয়। এটি আপনাকে সন্তানের সুযোগ থেকে ভেরিয়েবলগুলির সাথে পরামিতিগুলি স্থিত করে প্যারেন্ট স্কোপে একটি অভিব্যক্তি মূল্যায়নের অনুমতি দেয়। একটি উদাহরণ ( প্লাঙ্ক ):

<child-component 
  foo = "myVar + $ctrl.parentVar + myOtherVar"
</child-component>
angular.module('heroApp').component('childComponent', {
  template: "<div>{{  $ctrl.parentFoo({myVar:5, myOtherVar:'xyz'})  }}</div>",
  bindings: {
    parentFoo: '&foo'
  }
});

প্রদত্ত parentVar=10, অভিব্যক্তিটি parentFoo({myVar:5, myOtherVar:'xyz'})মূল্যায়ন করবে 5 + 10 + 'xyz'এবং উপাদানটি রেন্ডার হবে:

<div>15xyz</div>

আপনি কখন এই সংশ্লেষিত কার্যকারিতাটি ব্যবহার করতে চান? &লোকেরা প্রায়শই পিতামাতার স্কোপগুলিতে একটি কলব্যাক ফাংশন সন্তানের স্কোপগুলিতে যেতে ব্যবহার করে। বাস্তবে, তবে, ফাংশনটি পাস করার জন্য '<' ব্যবহার করে একই প্রভাব অর্জন করা যেতে পারে, যা আরও সোজাসাপ্টা এবং প্যারামিটারগুলি পাস করার জন্য বিশ্রী কোঁকড়ানো ধনুর্বন্ধনী সিনট্যাক্স এড়ানো হয় ({myVar:5, myOtherVar:'xyz'} )। বিবেচনা:

কলব্যাক ব্যবহার করে &:

<child-component parent-foo="$ctrl.foo(bar)"/>
angular.module('heroApp').component('childComponent', {
  template: '<button ng-click="$ctrl.parentFoo({bar:'xyz'})">Call foo in parent</button>',
  bindings: {
    parentFoo: '&'
  }
});

কলব্যাক ব্যবহার করে <:

<child-component parent-foo="$ctrl.foo"/>
angular.module('heroApp').component('childComponent', {
  template: '<button ng-click="$ctrl.parentFoo('xyz')">Call foo in parent</button>',
  bindings: {
    parentFoo: '<'
  }
});

নোট করুন যে অবজেক্টগুলি (এবং অ্যারেগুলি) অনুলিপি না করে সন্তানের ক্ষেত্রের রেফারেন্স দ্বারা পাস করা হয়েছে। এর অর্থ হ'ল এটি যদি একতরফা বাধ্যতামূলক হয় তবে আপনি পিতা বা মাতা এবং সন্তানের সুযোগ উভয় ক্ষেত্রে একই বস্তুর সাথে কাজ করছেন।


ক্রিয়াকলাপে বিভিন্ন উপসর্গ দেখতে, এই নিমজ্জনটি খুলুন ।

ওয়ান-টাইম বাইন্ডিং (ইনিশিয়ালাইজেশন) ব্যবহার করে ::

[সরকারী দস্তাবেজ]
অ্যাঙ্গুলারজেএস এর পরবর্তী সংস্করণগুলি এককালীন বাধ্যবাধকতা রাখার বিকল্পটি প্রবর্তন করে, যেখানে শিশু স্কোপ সম্পত্তি কেবল একবার আপডেট করা হয়। এটি পিতামাতার সম্পত্তি দেখার প্রয়োজন বাদ দিয়ে কর্মক্ষমতা উন্নত করে। সিনট্যাক্স উপরের থেকে পৃথক; এক-সময় বাধ্যতামূলক ঘোষণা করতে, আপনি উপাদান ট্যাগে:: অভিব্যক্তিটির সামনে যোগ করুন :

<child-component 
  tagline = "::$ctrl.tagline">
</child-component>

এটি taglineএকমুখী বা দ্বিমুখী বাইন্ডিং স্থাপন না করে সন্তানের সুযোগের মান প্রচার করবে । দ্রষ্টব্য : যদি taglineপ্রাথমিকভাবে undefinedপিতামাতার স্কোপে থাকে তবে কৌণিক এটি পরিবর্তন না হওয়া অবধি দেখবে এবং তারপরে সন্তানের সুযোগে সংশ্লিষ্ট সম্পত্তিটির এক-সময় আপডেট করবে update

সারসংক্ষেপ

সম্পত্তিটি কোনও বস্তু, অ্যারে, স্ট্রিং ইত্যাদির উপর নির্ভর করে উপসর্গগুলি কীভাবে কাজ করে তা নীচের সারণীতে দেখানো হয়েছে

বিভিন্ন বিচ্ছিন্ন স্কোপ বাইন্ডিং কীভাবে কাজ করে


4

@ স্থানীয় স্কোপ সম্পত্তি নির্দেশের বাইরে সংজ্ঞায়িত স্ট্রিংয়ের মানগুলি অ্যাক্সেস করতে ব্যবহৃত হয়।

= যে ক্ষেত্রে আপনার বাহ্যিক ক্ষেত্র এবং নির্দেশকের বিচ্ছিন্ন সুযোগের মধ্যে দ্বি-মুখী বাঁধাই তৈরি করা দরকার সেখানে আপনি = চরিত্রটি ব্যবহার করতে পারেন।

& স্থানীয় স্কোপ সম্পত্তি হ'ল নির্দেশকের গ্রাহককে কোনও ক্রিয়াকলাপে পাস করার অনুমতি দেয় যা নির্দেশ নির্দেশ করতে পারে।

দয়া করে নীচের লিঙ্কটি পরীক্ষা করুন যা আপনাকে উদাহরণগুলির সাথে পরিষ্কার বোঝার সুযোগ দেয় I এটি সত্যই এটি খুব দরকারী হিসাবে এটি ভাগ করে নেওয়ার চিন্তা করে thought

http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-2-isolate-scope


3

এমনকি সুযোগ যেমন স্থানীয়, আপনার উদাহরণ হিসাবে, আপনি সম্পত্তি মাধ্যমে পিতা বা মাতা সুযোগ অ্যাক্সেস করতে পারেন $parent। নীচের কোডটি ধরে নিন, titleএটি প্যারেন্ট স্কোপে সংজ্ঞায়িত। তারপরে আপনি শিরোনামটি এতে প্রবেশ করতে পারেন $parent.title:

link : function(scope) { console.log(scope.$parent.title) },
template : "the parent has the title {{$parent.title}}"

তবে বেশিরভাগ ক্ষেত্রে একই প্রভাবটি গুণাবলী ব্যবহার করে আরও ভালভাবে পাওয়া যায়।

আমি যেখানে "&" স্বরলিপিটি পেয়েছি, যেখানে "বিচ্ছিন্ন স্কোপ থেকে একটি অভিব্যক্তির মাধ্যমে এবং প্যারেন্ট স্কোপের কাছে ডেটা প্রেরণ করতে ব্যবহৃত হয়" এর একটি উদাহরণ কার্যকর ছিল (এবং দ্বি-দিকের ডাটাবেইন্ডিংটি ব্যবহার করা যায়নি) নির্দেশে ছিল এনজি-রিপিটের ভিতরে একটি বিশেষ ডেটাস্ট্রাকচার রেন্ডার করার জন্য।

<render data = "record" deleteFunction = "dataList.splice($index,1)" ng-repeat = "record in dataList" > </render>

রেন্ডারিংয়ের একটি অংশ ছিল একটি মুছুন বোতাম এবং এখানে & এর মাধ্যমে বাইরের স্কোপ থেকে একটি মোছার কাজটি সংযুক্ত করা কার্যকর ছিল। রেন্ডার-ডাইরেক্টিভের ভিতরে এটির মতো দেখাচ্ছে

scope : { data = "=", deleteFunction = "&"},
template : "... <button ng-click = "deleteFunction()"></button>"

2-উপায়ে ডেটাবাইন্ডিং অর্থাৎ data = "="মুছে ফাংশনটি প্রতিটি $digestচক্রের উপর চলতে পারে বলে এটি ব্যবহার করা যায় না, যা ভাল নয়, কারণ রেকর্ডটি তখনই মুছে ফেলা হয় এবং কখনই রেন্ডার হয় না।




1

@এবং =অন্যান্য উত্তর দেখুন।

টিএল সম্পর্কে একটি গ্যাটা ; ডিআর; পায় অভিব্যক্তি একটি পিতা বা মাতা থেকে এবং নির্দেশ একটি ফাংশন, যে অভিব্যক্তি কল হিসেবে, এটা সেট (অন্যান্য উত্তর উদাহরণ মত না শুধুমাত্র ফাংশন)। এবং এই ফাংশনটির ভেরিয়েবলগুলির সাথে কোনও বস্তু পাস করে অভিব্যক্তির কোনও ভেরিয়েবল (এমনকি ফাংশনের নাম) প্রতিস্থাপনের ক্ষমতা রয়েছে । &

&

ব্যাখ্যা
& করা হয় একটি অভিব্যক্তি রেফারেন্স, মানে আপনি কিছু পাস <myDirective expr="x==y"></myDirective>
নির্দেশ এই exprএকটি ফাংশন, যে অভিব্যক্তি কল মত হবে:
function expr(){return x == y}
সুতরাং নির্দেশকের এইচটিএমএল <button ng-click="expr()"></button>এক্সপ্রেশন কল করবে। নির্দেশের জেএসে কেবল $scope.expr()অভিব্যক্তিটিকেও ডাকা হবে।
অভিভাবকটিকে পিতামাতার $ স্কোপ.এক্স এবং $ স্কোপ.ইয়ের সাথে ডাকা হবে।
আপনার পরামিতিগুলি ওভাররাইড করার ক্ষমতা রয়েছে!
যদি আপনি তাদের কল করে সেট করেন, উদাহরণস্বরূপ <button ng-click="expr({x:5})"></button>
তাহলে আপনার প্যারামিটার xএবং পিতামাতার প্যারামিটারের সাহায্যে এক্সপ্রেশনটি কল করা হবে y
আপনি উভয়ই ওভাররাইড করতে পারেন।
এখন আপনি জানেন, কেন <button ng-click="functionFromParent({x:5})"></button>কাজ করে।
কারণ এটি কেবল পিতামাতার অভিব্যক্তিকে কল করে (উদাঃ<myDirective functionFromParent="function1(x)"></myDirective>) এবং এই ক্ষেত্রে আপনার নির্দিষ্ট পরামিতিগুলির সাথে সম্ভাব্য মানগুলি প্রতিস্থাপন করে x। ।
এটা হতে পারে:
<myDirective functionFromParent="function1(x) + 5"></myDirective>
বা
<myDirective functionFromParent="function1(x) + z"></myDirective>
সন্তান কলের মাধ্যমে:
<button ng-click="functionFromParent({x:5, z: 4})"></button>
এমনকি এমনকি ফাংশন প্রতিস্থাপন সহ:
<button ng-click="functionFromParent({function1: myfn, x:5, z: 4})"></button>

এটি কেবল একটি অভিব্যক্তি, এটি কোনও ফাংশন, বা অনেকগুলি ফাংশন, বা কেবল তুলনা কিনা তা বিবেচ্য নয়। এবং আপনি এই অভিব্যক্তিটির কোনও ভেরিয়েবল প্রতিস্থাপন করতে পারেন ।

উদাহরণস্বরূপ:
ডাইরেক্টিভ টেমপ্লেট বনাম কল কোড:
পিতামাতার defined সুযোগ.x, $ স্কোপ.ই:
প্যারেন্ট টেম্পলেট: <myDirective expr="x==y"></myDirective>
<button ng-click="expr()"></button>কল $scope.x==$scope.y
<button ng-click="expr({x: 5})"></button>কল 5 == $scope.y
<button ng-click="expr({x:5, y:6})"></button>কল5 == 6

পিতামাতা $ সুযোগ.ফানশান 1, $ স্কোপ.এক্স, $ স্কোপ.ই:
প্যারেন্ট টেম্পলেট:<myDirective expr="function1(x) + y"></myDirective>

<button ng-click="expr()"></button>কল $scope.function1($scope.x) + $scope.y
<button ng-click="expr({x: 5})"></button>কল $scope.function1(5) + $scope.y
<button ng-click="expr({x:5, y:6})"></button>কল $scope.function1(5) + 6
নির্দেশ ফাংশন হিসাবে $ scope.myFn রয়েছে:
<button ng-click="expr({function1: myFn, x:5, y:6})"></button> কল$scope.myFn(5) + 6


0

আমাকে কেন '@' দিয়ে "{{শিরোনাম}}" এবং '=' দিয়ে "শিরোনাম" ব্যবহার করতে হবে?

আপনি যখন {{শিরোনাম} use ব্যবহার করেন, কেবলমাত্র পিতামাতার স্কোপ ভ্যালুটি নির্দেশিক দর্শন এবং মূল্যায়নের উদ্দেশ্যে প্রেরণ করা হবে। এটি একটি উপায়ে সীমাবদ্ধ, অর্থাত্ প্যারেন্ট স্কোপে পরিবর্তনটি প্রতিফলিত হবে না। আপনি যখন পিতামাতার স্কোপে বাচ্চাদের নির্দেশনায় যে পরিবর্তনগুলি প্রতিফলিত করতে চান তখন আপনি '=' ব্যবহার করতে পারেন। এটি দুটি উপায়।

আমি কোনও বৈশিষ্ট্য দিয়ে আমার উপাদানটি সজ্জিত না করে, কী আমিও সরাসরি প্যারেন্ট স্কোপে অ্যাক্সেস করতে পারি?

যখন নির্দেশকের এতে স্কোপ অ্যাট্রিবিউট থাকে (স্কোপ: {}), তখন আপনি আর পিতামাতাদের স্কোপ সরাসরি অ্যাক্সেস করতে পারবেন না। তবে তবুও স্কোপের মাধ্যমে এটি অ্যাক্সেস করা সম্ভব। পিতামাতা ইত্যাদি you আপনি যদি নির্দেশ থেকে সুযোগ সরিয়ে থাকেন তবে এটি সরাসরি অ্যাক্সেস করা যেতে পারে।

ডকুমেন্টেশনটি বলে যে "প্রায়শই বিচ্ছিন্ন স্কোপ থেকে একটি অভিব্যক্তির মাধ্যমে এবং প্যারেন্ট স্কোপে ডেটা প্রেরণ করা বাঞ্ছনীয়" তবে এটি দ্বিদ্বায়ী বাঁধাইয়ের সাথেও বেশ কার্যকর বলে মনে হচ্ছে। কেন এক্সপ্রেশন রুট ভাল হবে?

এটি নির্ভর করে প্রসঙ্গে on আপনি যদি কোনও অভিব্যক্তিকে কল করতে বা ডেটা সহ ফাংশন করতে চান, আপনি ব্যবহার করেন & এবং যদি আপনি ডেটা ভাগ করে নিতে চান, তবে আপনি '=' ব্যবহার করে দ্বিপক্ষীয় পদ্ধতিতে ব্যবহার করতে পারেন

আপনি নীচের লিঙ্কে নির্দেশকে ডেটা পাঠানোর একাধিক পদ্ধতির মধ্যে পার্থক্য খুঁজে পেতে পারেন:

AngularJS - বিচ্ছিন্ন Scopes - @ বনাম = বনাম &

http://www.codeforeach.com/angularjs/angularjs-isolated-scopes-vs-vs


0

@ অ্যাট্রিবিউট স্ট্রিং বাইন্ডিং (একমুখী) = দ্বি-মুখী মডেল বাইন্ডিং এবং কলব্যাক পদ্ধতি বাঁধাই


0

@ ডিওএম বৈশিষ্ট্যের মূল্যায়িত মানের সাথে একটি স্থানীয় / নির্দেশিক স্কোপ সম্পত্তি যুক্ত করে। = স্থানীয় / নির্দেশমূলক স্কোপ সম্পত্তিকে পিতামাতার স্কোপ সম্পত্তি হিসাবে আবদ্ধ করে। & বাধ্যতামূলক হ'ল কোনও নির্দেশকে আপনার নির্দেশকের স্কোপে প্রবেশ করার জন্য যাতে এটি আপনার নির্দেশের মধ্যে ডাকতে পারে।

@ অ্যাট্রিবিউট স্ট্রিং বাইন্ডিং = দ্বি-মুখী মডেল বাঁধাই এবং কলব্যাক পদ্ধতি বাঁধাই

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.