اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
در پستهای قبلی بیان شد که برای پیاده سازی عملیات مقید سازی عناصر View به مدل در کنترلر باید scope$ را به تابع سازنده کنترلر تزریق کرد. برای مثال:
View متناظر نیز به صورت میباشد:
در Angular 1.2 روشی به نام controller as معرفی شده است که با توجه به نوع پیاده سازی آن نیازی به تزریق scope$ در توابع سازنده نیست. فقط در کنترلر به جای وابستگی مستقیم به scope$ ا زکلمه کلیدی this و در هنگام عملیات مقید سازی باید از نام مستعار تعیین شده برای کنترلر استفاده نمایید. برای مثال
و استفاده آن در View
در هنگام عملیات routing نیز میتوان این عناوین مستعار را برای کنترلر با استفاده از controllerAs مشخص نمود. به صورت زیر:
var app = angular.module('myApp', []); app.controller('myController', function ($scope) { $scope.name = 'Masoud'; $scope.family = 'Pakdel'; })
<div ng-app="myApp"> <div ng-controller="myController"> <div> {{name}} {{family}} </div> </div> </div>
var app = angular.module('myApp', []); app.controller('myController', function () { this.name = 'Masoud'; this.family = 'Pakdel'; })
<div ng-app="myApp"> <div ng-controller="myController as myCtrl"> <div> {{myCtrl.name}} {{myCtrl.family}} </div> </div> </div>
app.config(function($routeProvider){ $routeProvider.when('/first', { templateUrl: 'first.html', controller: 'FirstCtrl', controllerAs:'fc' }) .when('/second', { templateUrl: 'second.html' , controller: 'ُSecondCtrl', controllerAs:'sc' }) .otherwise({ redirectTo: '/first' }); });