نظرات مطالب
1- two way binding ( انقیاد دو طرفه)
Data-binding in Angular apps is the automatic synchronization of data between the model and view components
2- در (Remove({{comment.id}},$Index نمیتوان از {{}} استفاده کرد، بجای آن (Remove(comment.id,$Index
آیا روش زیر برای پیادهسازی Self Referencing در حالی که هر عضو فقط صفر یا یک عضو فرزند میتواند داشته باشد، صحیح است؟
به نوعی پیادهسازی Self Referencing و One-to-Zero-or-One با هم:
public class EventItem { public int Id { get; set; } public int? ParentId { get; set; } public virtual EventItem Parent { get; set; } public virtual EventItem Alternative { get; set; } }
public class EventItemConfiguration : IEntityTypeConfiguration<EventItem> { public void Configure(EntityTypeBuilder<EventItem> builder) { builder.HasIndex(e => e.ParentId); builder.HasOne(e => e.Parent) .WithOne(e => e.Alternative) .HasForeignKey<EventItem>(e => e.ParentId); } }
اشتراکها
10 قانون طلایی نامگذاری متغیر ها
اشتراکها
همه چیز درباره الگوی طراحی Singleton
Singleton design pattern is one of the simplest design patterns: it involves only one class throughout the application which is responsible to instantiate itself, to make sure it creates not more than one instance; in the same time it provides a global point of access to that instance. In this case the same instance can be used from everywhere, being impossible to invoke directly the constructor each time.
بازخوردهای پروژهها
خطای جاوا اسکریپت در bootstrap
Unable to get property 'offsetWidth' of undefined or null reference
bootstrap-rtl.js, line 354 character 9
اشتراکها
اضافه شدن JIT به PostgreSQL 11
بعد از مطالعه پستهای ^ و ^ نکته ای به ذهنم رسید که بیان آن از بنده و مطالعه آن توسط شما خالی از لطف نیست. اگر مثالهای پیاده سازی شده در پستهای ^ و ^ را با AngularJs نسخه 1.2 اجرا نمایید به طور حتم با خطا روبرو میشوید و نتیجه مورد نظر حاصل نمیشود. در این پست نیز توسط یکی از دوستان اشاره ای به این مطلب شد.
دلیل خطا این است که از نسخه 1.2 به بعد در Angular سیستم مسیر یابی به این شکل امکان پذیر نیست و بخش مسیریابی به یک فایل دیگر به نام angular-route.js منتقل شده است. در نتیجه اگر به سبک نسخههای قبلی Angular از سیستم مسیریابی استفاده نمایید با خطا مواجه خواهید شد و خطای مورد نظر هم مربوط به عدم توانایی در تزریق وابستگی routeProvider$ به ماژول مورد نظر است. حال راه حل چیست؟
کافیست در هنگام تعریف ماژول، ngRoute را به عنوان وابستگی ماژول تعیین نمایید. و از طرفی فایل اسکریپتی angular-route.js را بعد از angular.js فراخوانی کنید.
بررسی مثال:
کدهای زیر مربوط به مثالهای پست قبلی میباشد که شرح کامل آن در این پست است:
دلیل خطا این است که از نسخه 1.2 به بعد در Angular سیستم مسیر یابی به این شکل امکان پذیر نیست و بخش مسیریابی به یک فایل دیگر به نام angular-route.js منتقل شده است. در نتیجه اگر به سبک نسخههای قبلی Angular از سیستم مسیریابی استفاده نمایید با خطا مواجه خواهید شد و خطای مورد نظر هم مربوط به عدم توانایی در تزریق وابستگی routeProvider$ به ماژول مورد نظر است. حال راه حل چیست؟
کافیست در هنگام تعریف ماژول، ngRoute را به عنوان وابستگی ماژول تعیین نمایید. و از طرفی فایل اسکریپتی angular-route.js را بعد از angular.js فراخوانی کنید.
بررسی مثال:
کدهای زیر مربوط به مثالهای پست قبلی میباشد که شرح کامل آن در این پست است:
var myFirstRoute = angular.module('myFirstRoute', []); myFirstRoute.config(['$routeProvider', function($routeProvider) { $routeProvider. when('/pageOne', { templateUrl: 'templates/page_one.html', controller: 'ShowPage1Controller' }). when('/pageTwo', { templateUrl: 'templates/page_two.html', controller: 'ShowPage2Controller' }). otherwise({ redirectTo: '/pageOne' }); }]); myFirstRoute.controller('ShowPage1Controller', function($scope) { $scope.message = 'Content of page-one.html'; }); myFirstRoute.controller('ShowPage2Controller', function($scope) { $scope.message = 'Content of page-two.html'; });
var myFirstRoute = angular.module('myFirstRoute',['ngRoute']); myFirstRoute.config(['$routeProvider', function($routeProvider) { $routeProvider. when('/pageOne', { templateUrl: 'templates/page_one.html', controller: 'ShowPage1Controller' }). when('/pageTwo', { templateUrl: 'templates/page_two.html', controller: 'ShowPage2Controller' }). otherwise({ redirectTo: '/pageOne' }); }]);
<body ng-app="app"> <div> <div> <div> <ul> <li><a href="#pageOne"> Show page one </a></li> <li><a href="#pageTwo"> Show page two </a></li> </ul> </div> <div> <div ng-view></div> </div> </div> </div> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script> <script src="angular-route.js"></script> <script src="app.js"></script> </body>
برای مطالعهی این مقاله شما باید به مواردی از قبیل کتابخانهی AngularJs، تعاملات بین کلاینت و سرور و همچنین معماری RESTful تسلط کافی داشته باشید و ما از توضیح و تفصیلی این سرفصلها اجتناب میکنیم.
همانطور که ملاحظه میکنید تمام پروسهی دریافت، در یک خط خلاصه شده است. همچنین میبینید که restAngular دارای Promise نیز هست. در تکه کد اول، تمامی userها به صورت Get دریافت میشوند. در تکه کد دوم مشاهده میکنید که عملیات درخواست لیست ماشینهای کاربر چگونه در یک خط خلاصه میگردد. حال فرض کنید قصد داشتیم تا این عملیات را با وابستگی http پیاده سازی نماییم. برای این کار باید چندین خط کد را درون یک سرویس جا میدادیم و آنگاه از متد سرویس در کنترلر استفاده میکردیم.
توجه داشته باشید هنگامیکه یک وابستگی به module اضافه میگردد، با حروف کوچک یعنی restangular اضافه میگردد؛ اما هنگامیکه به کنترلر اضافه میشود، به صورت Restangular و با R بزرگ اضافه میگردد.
در این قسمت قصد داشتیم تا شما را با این کتابخانه کمی آشنا کنیم. در قسمت بعدی سعی میکنیم تا با مثالهایی کاربردی، شما را بیشتر با این سرویس خارق العاده آشنا کنیم.
خیلی خوب بپردازیم به اصل مطلب:
Restangular چیست؟
کتابخانه RestAngular بنا به گفته ناشر در مستندات Github آن، یک سرویس توسعه داده شده AngularJs میباشد که کدهای نوشته شدهی برای پیاده سازی فرآیندهای Request/Response کلاینت و سرور را به حداقل رسانده است. این فرآیندها در قالب درخواستهای GET، POST، DELETE و Update صورت میپذیرند. این سرویس برای وب اپلیکیشنهایی که که دادههای خود را از APIهای RESTful همانند Microsoft ASP.NET Web API 2 دریافت میکنند نیز بسیار کارآمد است.
کد زیر یک فرآیند درخواست GET را نمایش میدهد که در آن از سرویس RestAngular استفاده شده است:
// Restangular returns promises Restangular.all('users').getList() // GET: /users .then(function(users) { // returns a list of users $scope.user = users[0]; // first Restangular obj in list: { id: 123 } }) // Later in the code... // Restangular objects are self-aware and know how to make their own RESTful requests $scope.user.getList('cars'); // GET: /users/123/cars // You can also use your own custom methods on Restangular objects $scope.user.sendMessage(); // POST: /users/123/sendMessage // Chain methods together to easily build complex requests $scope.user.one('messages', 123).one('from', 123).getList('unread'); // GET: /users/123/messages/123/from/123/unread
در اینجا همچنین قادرید درخواستهای خود را به صورت سفارشی نیز اعمال کنید (تکه کد سوم) و در آخر مشاهده میکنید که پیچیدهترین عملیاتهای درخواست کاربر را میتوان در یک خط خلاصه نمود. برای نمونه کد آخر یک دستور GET تو در تو را به چه سادگی پیاده سازی کرده است.
وابستگی ها
شروع پروژه
برای شروع پروژه و استفاده از RestAngular، پس از اضافه کردن اسکریپت رفرنسها و وابستگیها (lodash و AngularJs) باید وابستگی restAngular را به صورت زیر به angular.module اضافه نمایید:
// Add Restangular as a dependency to your app angular.module('your-app', ['restangular']); // Inject Restangular into your controller angular.module('your-app').controller('MainCtrl', function($scope, Restangular) { // ... });
برخی از متدهای RestAngular
در این بخش قصد داریم تا برخی از پر کاربردترین متدهای RestAngular را تشریح کنیم:
نام متد | پارامترهای ارسالی | توضیحات |
one | route, id | این متد یک RestAngular object ایجاد میکند که از آدرسی که در route قرار داده شده با id مشخص دریافت میشود. |
all | route | این متد یک RestAngular object که لیستی از المنت هایی را که در آدرس route قرار دارد، دریافت مینماید. |
oneUrl | route, url | این متد یک RestAngular object ایجاد میکند که یک المنت از url خاصی را بازگشت میدهد. مانند: Restangular.oneUrl( 'googlers' , 'http://www.google.com/1' ).get(); |
allUrl | route, url | این متد مانند متد قبل است با این تفاوت که یک مجموعه را بازگشت میدهد. |
copy | formElement | این متد یک کپی از المنتهای یک فرم را ایجاد میکند که ما میتوانیم آنها را تغییر دهیم. |
restangularizeElement | parent,element, route, queryParams | یک المنت جدید را به صورت Restangularize تغییر میدهد. |
restangularizeCollection | parent, element, route, queryParams | یک کالکشن Collection را به صورت Restangularize تغییر میدهد. |
اشتراکها
نگاهی به انواع و اقسام طعمهای NET.
اشتراکها