bu şekilde uzun format kullanılmalı. appEliteAddDirective('birdSelect', [function () { return { require: ['ngModel'], restrict: 'E', templateUrl: function (elem, attrs) { /*attrs parametreleri template-url ile İstenilen tasarım yapılabilir. Select.Content.cshtml içerisindeki html kopyalanır değiştirilir ve ismi bu attribute'a yazılır. */ return angular.isDefined(attrs.templateUrl) ? attrs.templateUrl : 'BirdSelectContent.html'; }, scope: { //Bunun sayesinde iki taraflı veri aktarımını sağlamış olduk. ngModel: '=', //Selected olan objenin atanacağı nesne birdModel: "=" //Tüm parametlerimizi gönderdiğimiz attribute /*birdModel parametreleri - giriş yapılmazsa kullanıldıkları yere göre varsayılan olarak false, null veya ''(boş string) değerlerini alırlar data(array) içeriğini göstereceğimiz dizi name(string) data item'ları içinden neyi ekrana basacağız Örn:'Name','Title', vs.. Boş verilirse her satırda object değil dizi elemanı olduğunu varsayarız placeHolder(string) Tanımlı değilse boş string değeri verilir selectablePlHolder(bool) Seçim yapılsa dahi yeniden varsayılan placeholder gösterilebilir ve veri seçilmeden geçiş yapabilmemizi sağlar(Tümü vs yazabilmek için) callBack(function) Model set edilince çalıştırılacak. Geriye seçili nesne ve dizi index'i dönderilir geriye (selectedObj,index,callBackObj) dönderilir callBackObj callBack ile geriye dönderilmek istenen nesne formatFunc(function) Gösterilecek değerleri belirtilen fonksiyona gönderir. Hem normalde gösterilecek string hem de seçilen nesne'nin kendisi fonksiyona parametre olarak gider. */ //li tagine css class'ı vermek için item bazında cssClass değeri doldurulabilir }, link: function (scope, element, attrs, ctrl) { //Ayarların alındığı model. var lcModel = scope.birdModel; function init() { //Varsayılan değerler >>> showErrorIfUndefined(lcModel, 'birdModel'); if (fnIsNullOrUndefined(lcModel.placeHolder)) lcModel.placeHolder = ''; //Varsayılan değerler <<< function showErrorIfUndefined(argParam, argName) { if (angular.isUndefined(argParam)) console.error("birdSelect directive'i için '" + argName + "' parametresi gerekli!"); } } //nesne içerisinde görünecek scope.showThis = function (argObj) { var retStr = fnIsNullOrUndefined(argObj) ? "" : (fnIsNullOrUndefined(lcModel.name) ? argObj : argObj[lcModel.name]); return lcModel.formatFunc ? lcModel.formatFunc(retStr, argObj) : retStr; } //start verilsin init(); //Seçim yapıldıktan sonra çalışacak scope.setIt = function (argObj, index, $event) { if ($event) $event.preventDefault(); //Selected olan nesne set edilsin scope.ngModel = argObj; //callBack fonksiyonu varsa çalışsın ve geriye seçilen objeyi ve dizi index'ini döndersin if (lcModel.callBack) lcModel.callBack(argObj, index, lcModel.callBackObj); //modal içinde açılan dropdown'da seçim yapılsa dahi kapanmıyordu. Onun fixi. scope.isOpen = false; } //selectablePlHolder=true ise kullanılıyor scope.resetIt = function ($event) { scope.setIt(undefined, -1, $event); } } }; }]);
appEliteAddDirective('birdConsole', ['$document', '$timeout', function ($document, $timeout) { return { restrict: 'A', scope: { birdConsole: "&" }, link: function (scope, elm, attrs) { //Ayarların alındığı model. var opts = scope.birdConsole(); // data console'a ne basılacak // isJson(true) console'a json formatına çevrilmiş olarak basar // timeout(0) Bazı objeler geç doluyor, console'a basmadan bir süre beklemesini istersek bu alana mili saniye cinsinden bir değer girilir. if (!fnIsNullOrUndefined(opts.data)) { if (fnIsNullOrUndefined(opts.isJson)) opts.isJson = true; if (fnIsNullOrUndefined(opts.isJson)) opts.timeout = 1000; $timeout(function () { if (opts.isJson) console.log(angular.toJson(opts.data)); else console.log(opts.data); }, opts.timeout); } } }; }]);