PHP rocks! wünscht allen Mitgliedern einen guten Rutsch ins neue Jahr 2017 !!!
Hinweis: Das Forum zieht um! Um keine Datenverluste zu haben, schalten wir zwecks Übernahme der Daten das Forum am Sonntag, den 24.04.2016 um ca. 21:00 Uhr offline und passen anschliessend die DNS-Einträge an.
www.php-rocks.de wird euch dann nach den Aktualisierungen der DNS-Server wieder wie gewohnt uneingeschränkt zur Verfügung stehen.
Danke für euer Verständnis!

Hallo, Gast
Du musst dich registrieren bevor du auf unserer Seite Beiträge schreiben kannst.

Benutzername/E-Mail:
  

Passwort
  





Durchsuche Foren

(Erweiterte Suche)

Foren-Statistiken
» Mitglieder: 291
» Neuestes Mitglied: awajonn11
» Foren-Themen: 171
» Foren-Beiträge: 901

Komplettstatistiken

Aktive Themen
Kaufen Sie ein TELC-GOETH...
Forum: Off Topic
Letzter Beitrag: awajonn11
12.04.2024, 13:37
» Antworten: 0
» Ansichten: 195
Kaufen Sie ein TELC-GOETH...
Forum: PHP Basics
Letzter Beitrag: awajonn11
12.04.2024, 13:35
» Antworten: 0
» Ansichten: 101
PHPMailer Pfad wird nicht...
Forum: PHP Basics
Letzter Beitrag: Arne Drews
23.08.2022, 21:07
» Antworten: 5
» Ansichten: 2.882
PHP 8.1: Endlich Enums in...
Forum: PHP Basics
Letzter Beitrag: Arne Drews
22.04.2021, 16:55
» Antworten: 1
» Ansichten: 2.699
Einfache Template Engine
Forum: PHP Template Engines
Letzter Beitrag: Arne Drews
22.04.2021, 16:49
» Antworten: 4
» Ansichten: 11.093
OAuth - Should I "scrambl...
Forum: Off Topic
Letzter Beitrag: Till
05.01.2020, 04:55
» Antworten: 0
» Ansichten: 7.884
"Invisible" Captcha
Forum: PHP Basics
Letzter Beitrag: Arne Drews
11.12.2019, 15:00
» Antworten: 5
» Ansichten: 10.419
Projektvorstellung - Test...
Forum: Off Topic
Letzter Beitrag: Till
22.11.2019, 20:03
» Antworten: 3
» Ansichten: 5.670
POST/GET routes deklarier...
Forum: PHP Basics
Letzter Beitrag: Till
14.11.2019, 19:44
» Antworten: 2
» Ansichten: 4.707
PHPMailer
Forum: PreComposed
Letzter Beitrag: Arne Drews
20.10.2019, 12:44
» Antworten: 6
» Ansichten: 8.682

 
  php-rocks.de bewerten
Geschrieben von: Arne Drews - 09.06.2016, 09:56 - Forum: Off Topic - Keine Antworten

Hallo,

Wer Lust und keinen Frust hat, darf uns gerne bewerten auf https://www.webwiki.de/php-rocks.de  Wink

Danke und weiterhin viel Spaß in diesem Forum
Arne Drews

Drucke diesen Beitrag

  Aus einer Vielzahl an Werten eine bestimmte Summe errechnen
Geschrieben von: Arne Drews - 08.06.2016, 10:40 - Forum: PHP Basics - Antworten (6)

Hallo,

Ich habe mal Anforderung, die eher auf mathematischer Logik basiert.
Es gibt eine Menge an Einzelwerten, aus denen ich eine Summe herausfinden muß.

Beispiel:

Ausgabe:
Einzelwerte:
46.93
78.44
9.01
46.93
334.37
19.90
usw.
Jetzt habe ich eine Summe von bspw. 515.68 und muß herausfinden, aus welchen Werten der Liste sich diese zusammensetzen "könnte".
In diesem Fall war es "zu Fuß" noch relativ einfach ( 334.37 + 9.01 + 46.93 + 46.93 + 78.44 ), aber ich habe weitere solcher Fälle, bei denen ich das nicht so leicht hinbekomme.

Auf welcher mathematischen Logik basierend kann ich das in PHP umsetzen?
Danke

Drucke diesen Beitrag

  IE - only runs when console/dev tools
Geschrieben von: Till - 30.05.2016, 05:11 - Forum: JavaScript / JavaScript Frameworks / Ajax - Antworten (2)

Hallo,
mein javascript funktioniert nicht im IE.
-> Schalte ich F12 die dev tools an, "funktioniert" die Seite
-> Ja es gibt ein paar Fehler, welche allerdings abgefangen/behandelt werden.

Klicke ich die dev tools weg und lade neu geht die Seite wieder nicht.

Hat jemand eine Idee wonach ich suchen kann?

mfg

Drucke diesen Beitrag

  Objekte aus Klassen instanziieren
Geschrieben von: Arne Drews - 22.05.2016, 01:49 - Forum: PHP Basics - Antworten (13)

Hallo,

Ich suche gerade nach einem halbwegs eleganten Weg, aus einem Array mit Controller-Namen jeweils eine Instanz dessen zu erzeugen.

Beispiel:
Es existiert ein Array, in der Form:

Code:
Array(
   [0] => ClassName1,
   [1] => ClassName2,
   ...
   [n] => ClassNameN
)

Daraus möchte ich bspw. über eine Iteration etwas in der Art machen:
PHP-Code:
foreach ( $aAssemblies as $assembly ) {

 
   ${$assembly} = new $assembly;


Die dahinter verborgenen Klassen sind lediglich kleine Helper, die ich bei Bedarf in das Projekt einbinde, daher ist es nicht erforderlich den Bezeichner zur Laufzeit zu kennen.

Was besseres, wie variable Variabeln fällt mir allerdings adhoc leider nicht ein. Es funktioniert so, aber ich bin nicht sonderlich glücklich mit der Lösung.
Hat jemand vielleicht einen besseren Ansatz?

Danke

Drucke diesen Beitrag

  ui.router und jQuery mobile
Geschrieben von: Till - 18.05.2016, 12:46 - Forum: JavaScript / JavaScript Frameworks / Ajax - Antworten (6)

Hallo,
so, mit dem ui.router (siehe anderer Thread) bin ich nun weiter und hab es begriffen.

Jetzt habe ich ein Problem mit ui.router in Verwendung mit jQuery mobile:

Code:
     if(false===navigator.isDesktop){
    $locationProvider.html5Mode({
           enabled: false,
          requireBase: false
        });
        $locationProvider.hashPrefix('#');
 }else{
  $locationProvider.html5Mode(false);
 }
funktioniert nicht insofern er wenn jqm initialisiert wurde IMMER den htm5 mode verwendet.

Zur Info:
Im html5 Modus wird der "pushState flow" verwendet, die URL wird also als "echte" URL aufgerufen
und nicht als #hash anker.

Auf der Testseite kann man sehen was ich meine, wenn man sie jeweils mit einem
Desktop device oder einem mobile device aufruft:
http://test.freizeittreffen.de/pmx/
(Bei Verwendung von device emulator ist ein cache refresh erforderlich!)

Um den jqm push state modus zu vermeiden (für solche Fälle nutze ich meine eigene direktive http://www.jsclasses.org/blog/package/445/post/1-Fast-Migration-of-Regular-Sites-to-Mobile-using-Flow-Library.html ) hänge das rel="external" attribut an ausgehende links.
Dies funktioniert auch ganz gut, solange ich nicht den angular ui.router verwende.
Also:
- jqm geht
- ui.router geht
- beides zusammen -> conflict


Meine jqm initialisierung sieht so aus (wird aufgerufen wenn KEIN desktop device):
Code:
    var initialPageWrap = frdl.$q('body *[data-role="page"]');
  if(0 === initialPageWrap.length){
$('body' ).wrapInner( '<div data-dom-cache="false" data-role="page" data-frdl-mod="nodesktop" id="nodesktop-'+ str_replace('.', '-', new frdl.Url().getHost()) + '-' + Sha1.hash(new frdl.Url().urlMakeNew()) + '-' + Sha1.hash(document.title) +'" style="top:0px;left:0px;right:0px;bottom:0px;height:auto;width:auto;"></div>' );
  }    
  try{
 
         
    frdl.watchFor('a[href*=":\/\/"]:not([data-flow-prepared="true"]):not([frdl-ajax-link-boddystripped])').every(function(el){
        $(el).attr('data-flow-prepared', 'true')
             .attr('rel', 'external');
     });
     
     
       $('*[data-role="page"]').page({
                        create: function( event, ui ) {
                              $.mobile.pushStateEnabled = false;
                              $.mobile.initializePage();      
                          $.mobile.loading( 'hide' );
                        }
          });  
                   
               
                   
                       
           $('*[data-role="page"]').trigger('create');
           $.mobile.pushStateEnabled = false;
         
                             
}catch(err){
console.error(err);
}

In Internetforen habe ich gelesen man solle
Code:
<script> $.mobile.pushStateEnabled = false;</script>
bereits im HEADER der Seite deklarieren.
Das $.mobile wird allerdings bei mir asynchron geladen per $.lazy http://unwrongest.com/projects/lazy/ geladen
und jqm wird (wenn erforderlich) erst initialisiert wenn DOMContentLoaded.
Eine Verwendung von $.mobile im Header würde jqm zu früh und ungewollt laden!

Ich habe versucht das "normale Verhalten zu emulieren" indem ich das ui.router url prefix lösche und
$locationProvider.hashPrefix('#'); als hash prefix setzte.
Dies funktioniert zum einen nicht und ist zum anderen auch keine saubere Lösung.


Zusammenfassung:
Wie kann ich  $.mobile.pushStateEnabled = false; erzwingen?

Drucke diesen Beitrag

  [Entwicklung] Die UTF8-Verschw�rung
Geschrieben von: Arne Drews - 15.04.2016, 16:04 - Forum: Tutorials - Keine Antworten

Die UTF8-Verschw�rung
Man mag es kaum glauben, aber auch in der heutigen Zeit werden Projekte online gestellt, die ein Problem mit Sonderzeichen haben. In diesem kleinen Tutorial möchte ich euch das Ganze etwas näher bringen, in der Hoffnung, dass die Mystik dessen etwas verschwindet.


Was bedeutet "Sonderzeichen"?
Um den Begriff Sonderzeichen im Zusammenhang mit diesem Tutorial zu definieren, sollte man wissen, dass wir von sogenannten Zeichenkodierungen und Kodierungstabellen sprechen. Alle Zeichen, die wir auf dem Bildschirm darstellen können, entstammen aus einer Zeichenkodierungen-Tabelle. Wenn wir nun versuchen ein Zeichen auszugeben, das sich in der verwendeten Tabelle nicht befindet, kommt es zu unerwünschten Ausgaben, die wir sicher alle schon mal gesehen haben.

Als Beispiel soll dieses kleine HTML mal herhalten:

Code:
<html>
<head>
<title></title>
</head>

<body>

<p>Hier steht ein ganz gewöhnlicher Satz mit lauter bekannten Zeichen</p>

</body>
</html>
Soweit ja nichts besonderes und relativ unspektakulär... Aber Moment... Im Browser sieht das auf einmal eher komisch aus:
Ausgabe:
Hier steht ein ganz gew�hnlicher Satz mit lauter bekannten Zeichen
Hier haben wir ein Problem mit der Zeichenkodierung. Die von uns verwendete scheint das ö nicht zu kennen und macht daraus eine sonderbare Konstellation.


Wo liegt mein Fehler?
Hier liegt ein Problem mit der Zeichenkodierung vor. Zugegeben, hier wäre es mit ein wenig Erfahrung leicht, die Kodierung an der richtigen Stelle zu setzen, um alles korrekt anzeigen zu lassen. Aber wir wollen heute mal alles richtig machen und schauen uns dazu mal kurz im Überblick an, an welchen Stellen wir auf eine korrekte Kodierung achten und diese konsequent auch einsetzen sollten:
  • Speicherung von Dateien
  • HTTP Header
  • Im HTML als <meta>-Tag
  • Datenbankverbindungen
  • Datenbank-, Tabellen- und Spaltenkollation
Ui... Für einige vielleicht schon zu viele unbekannte Begriffe?
Keine Angst, was das im einzelnen bedeutet, gehen wir jetzt mal Schritt für Schritt durch...


Speicherung von Dateien
Eure Dateien sollten immer als UTF-8 ohne BOM gespeichert werden. Viele gute Editoren oder IDE's bieten die Möglichkeit, die Kodierung beim Speichern einer Dateien einzustellen.
Beispielhaft wäre das im SublimeText 3 über den Menüpunkt File -> Save with Encoding -> UTF-8 erledigt oder ihr geht auf File -> Reopen with Encoding -> UTF-8 und speichert die Datei dann wieder.
Aber auch andere Editoren, wie bspw. Notepad++ haben diese Möglichkeiten.
Hinweis
Das BOM ( ByteOrderMark ) ist eine Kennung für die Unicode-Kodierung, die den Datenstrom einleitet und im Falle von UTF8 aus der Bytesequenz EF BB BF besteht.
Das wird in Browsern häufig als  interpretiert und ausgegeben ( im Quelltext des Browsers erkennbar ).
Das führt häufig zu bekannten Fehlern, wie Cannot add header information. Daher sollte man immer darauf achten, dass Dateien immer ohne BOM gespeichert werden!
Das gilt übrigens für alle Dateien ( .html, .php, .css, .js, usw. )!


HTTP Header
Im HTTP-Header werden Informationen über das Dokument, sowie HTTP-Cookies und Kennungen für den HTTP-Server, User-Agent und MIME-Typ übertragen.
Hier muß für unseren Zweck die entsprechende Kodierung bestimmt werden. Das geht bspw. über folgende PHP-Anweisung:
PHP-Code:
header 'Content-Type: text/html; Charset=utf-8' ); 
Hinweis
Bei der Verwendung der header()-Anweisung ist darauf zu achten, dass diese am Anfang des Root-Scriptes vor sämtlichen Ausgaben erfolgt, da ihr sonst schnell wieder den bereits erwähnten Fehler Cannot add header information bekommt.


<meta>-Tag
Um auch dem Browser mitzuteilen, welche Codierung wir in dem Dokument verwenden, müssen wir dies per <meta>-Tag entsprechend dem verwendeten <!DOCTYPE mitteilen:

Für Dokumente mit HTML4.x-Doctype:
Code:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Für Dokumente mit HTML5-Doctype:
Code:
<meta charset="utf-8">
Der <meta>-Tag wird im <head> des Dokuments, am besten direkt nach dem <title>-Tag angegeben.
Tipp
Solltet ihr Formulare verwenden, setzt am besten auch darin gleich die korrekte Kodierung für die Datenübertragung:
Code:
<form name="form" method="post" accept-charset="utf-8">


Datenbankverbindung
Verwendet ihr in eurem Projekt eine Datenbank, ist natürlich auch darauf zu achten, dass die Daten über eine einheitliche Kodierung ausgetauscht werden.
Für die Verbindung mit der Datenbank ( hier beispielhaft MySQL ) können wir dies wie folgt angeben:

PDO:
PHP-Code:
$oDB = new PDO'mysql:host=localhost;dbname=exampledb;charset=utf8'$username$password ); 
MySQLi:
PHP-Code:
$oDB = new MySQLi 'localhost'$username$password'exampledb' );
$oDB->set_charset'utf8' ); 
Hinweis
In Bezug auf PDO sei erwähnt, dass der Parameter charset im DSN ( Data Source Name ) in PHP-Versionen vor 5.3.6 ignoriert wurde. Solltet ihr tatsächlich noch eine dieser Versionen haben, müsst ihr die Kodierung ähnlich folgender Weise setzen:
PHP-Code:
$options = array( MYSQL_ATTR_INI_COMMAND => 'set names utf8' );
$oDB = new PDO'mysql:host=localhost;dbname=exampledb'$username$password$options ); 
Noch besser wäre es natürlich, wenn ihr in dem Falle eher die PHP-Version updated!


Kollation der Tabellen, Spalten und der Datenbank selbst
Wenn wir dafür sorgen, dass die Verbindung zur Datenbank sauber über UTF-8 abgewickelt wird, müssen wir natürlich auch die Datenhaltung sinnvoller Weise darauf auslegen.
Hierzu gibt es in Administrations-Tools, wie etwa phpMyAdmin ( MySQL ), pgAdmin ( pgSQL ), u.w. eine Einstellung, die sich Kollation ( Collation ) nennt. Hier kann sowohl auf Datenbank-, Tabellen- und Spalten-Ebene festgelegt werden, mit welcher Kodierung gearbeitet werden soll.

Die gängigsten Kollationen in dem Bereich Unicode sind utf8_unicode_ci und utf8_general_ci. Nennenswerter Unterschied ist die genauere Sortierung bei utf8_unicode_ci, während utf8_general_ci etwas mehr Performance nachgesagt wird. Weitere nennenswerte Unterschiede sind mir von den verschiedenen utf8_-Kodierungen nicht bekannt. Ein Spezialfall bildet allerdings utf8_bin, das die Vergleiche im Binär-Format durchführt.

Hinweis
Sollte euer verwendetes DBMS utf8mb4 unterstützen, wäre das die noch die bessere Wahl. Damit stehen euch bis zu 4 Bytes pro Character zur Verfügung, womit ein zusätzlicher Umfang an Character dargestellt werden kann. MySQL unterstützt utf8mb4 ab Version 5.3.3

Danke an @mermshaus für die Info: http://www.php-rocks.de/thema/143;777-re-utf-8-verschwoerung-ergaenzung.html#pid777



Sonderfälle
Aus diesem Tutorial solltet ihr mitnehmen, dass ihr immer mit der richtigen Kodierung arbeitet und zwar an jeder Stelle, an der ihr Einfluss darauf habt!
Es gibt allerdings Situationen, in denen man vielleicht keinen Einfluss auf die Daten-Kollation hat. Bspw. bei einer Datenbank-Migration aus einer alten Datenbank in eine neue. Die alte Datenbank hält die Daten nicht in UTF-8 vor und ihr müsst diese zu UTF-8 in die neue übertragen. Hier wäre bspw. die PHP-Funktion utf8_encode() oder mb_convert_encoding() zu verwenden.

Hinweis
Vielleicht ist dem einen oder anderen bereits aufgefallen, dass auf Datenbank- und Datenbankverbindungs-Ebene grundsätzlich utf8 und in allen anderen Kontexten utf-8 verwendet wird. Wer sich daran hält, spart sich manche Fehlersuche...

Drucke diesen Beitrag

  C# - Outlook Plugin: Ribbon nicht sichtbar und Zugriff auf selektierte Mails?
Geschrieben von: Arne Drews - 24.03.2016, 20:47 - Forum: Off Topic - Keine Antworten

Hallo,

Hinweis
Ich habe das Thema bereits in einem anderen Forum laufen ( http://entwickler-forum.de/showthread.php/75109-Outlook-Plugin-Ribbon-nicht-sichtbar-und-Zugriff-auf-selektierte-Mails ), denke aber leider nicht, dass dort trotz guter Hilfe eine Lösung gefunden wird. Daher erstelle ich den Beitrag hier noch einmal und gebe das auch in dem anderen Forum bekannt, damit ich niemanden wegen CrossPost zu nahe trete. Sollte es extern eine Lösung geben, werde ich diese hier ebenfalls posten, wie auch umgekehrt.

Zum Thema:
Ich wollte gerne ein kleines Outlook-Plugin schreiben, mit dem ich per Button-Klick aus einem Ribbon-Menü über eine Liste markierter E-Mails iteriere und dessen Informationen verarbeite.

Das erste Problem habe ich bereits bei der Erstellung des Ribbon.
Ich habe mich dazu an diese Anleitung gehalten: https://youtu.be/3ucCxRrcgWA
Ist zwar am Beispiel von Word, aber ich denke, dass sollte adaptierbar sein.

Jedenfalls wird mir das Ribbon gar nicht angezeigt.

Kurze Erklärung zur Vorgehensweise:
Ich habe mit Visual Studio 2010 ein neues C#-Projekt ( Office -> 2010 -> Outlook 2010-AddIn ) angelegt.
Darin über Rechtsklick -> Hinzufügen -> Neues Element -> Office -> Menüband ( Visueller Designer ) hinzugefügt.
Den Scope des Ribbon, Tabs und des Button habe ich als public definiert ( als Versuch, weil beim Standard "Integrated" auch nichts zu sehen war ).

Das Ribbon wird aber wie gesagt nicht angezeigt?
Über Optionen -> AddIns in Outlook finde ich mein AddIn angehakt in den COM-Elementen. "Laden beim Starten" ist auch gesetzt.

Wenn ich Outlook starte bekomme ich diese Systemmeldung:
Ausgabe:
System.ArgumentException: Der Wert liegt außerhalb des erwarteten Bereichs.
  at
Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.GetManifests(TimeSpan timeout)
  at
Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInDeploymentManager.InstallAddIn()

ClickOnce benötige ich für das Projekt nicht, ist aber automatisch mit eingebunden. Ich habe keine Ahnung, wie ich das aus dem Projekt entferne oder den Fehler sonst beheben kann.
Im Netz finde ich zu dem Fehler so gut wie nur, dass man den Anwendungscache löschen/entfernen soll. Das habe ich gemacht, aber ohne Erfolg.
Der Fehler bleibt.

Ich habe inzwischen verschiedene Versionen des VS verwendet, um zu sehen, ob es daran lag, aber ganz egal mit welcher Kombination, ich bekomme immer obigen Fehler beim Starten von Outlook.


Ich freue mich über Hilfe und Ratschläge!
Danke

Drucke diesen Beitrag

  Android Tablet Probleme
Geschrieben von: Till - 23.03.2016, 16:05 - Forum: JavaScript / JavaScript Frameworks / Ajax - Antworten (5)

Hallo,
ich habe hier ein Android Tablet bei welchem im mitgelieferten Browser (wird wohl Chrome sein?) die Seite nicht wie gewünscht rendert.
Einige javascripte, insbesondere jQuery Mobile,werden hier nicht oder nicht richtig ausgeführt.
Im Firefox auf dem gleichen System gibt es keinerlei Probleme.
Auch wenn ich die Seite auf meinem Desktop PC im Emulator (Opera + Chrome) debugge werden keinerlei Fehler angezeigt.

Ich habe noch nicht herausbekommen wie ich auf diesem Tablet-Browser eine Fehlerkonsole anzeigen kann!?!

Testseite: shell.frdl.de

Drucke diesen Beitrag

  SQL Server Agent: Typenkonflikt
Geschrieben von: Arne Drews - 03.03.2016, 04:33 - Forum: Andere SQL Datenbanken - Antworten (1)

Hallo,

Ich habe auf einem MSSQL-Server 2012 einen Job laufen, der die Daten einer Sicht in eine CSV spielt.
Die Sicht habe ich heute in einer anderen Datenbank ( gleicher SQL-Server! ) neu aufgebaut und bekomme nun ein Typkonflikt für die Replace-Funktion ( VBScript ):

Code:
If dboColumn.Name = "Description" Then
   Set oRegExp = new RegExp
   With oRegExp
           .IgnoreCase = True
           .Global = True
           .MultiLine = True
           .Pattern = "<.*?>"
    sHtmlStripped = .Replace( dboColumn.Value, "" )
   End With
   Set oRegExp = Nothing
End If
Die Spalte Description ist sowohl in der alten Sicht, wie auch in der neuen vom Datentyp text.
Das Script ist an der Stelle absolut identisch, daher kann ich mir den Typkonflikt nicht erklären.

Vielleicht hat ja jemand eine Ahnung, woran das liegen könnte?

Das Protokoll sagt das:
Code:
Fehlerquelle= Laufzeitfehler in Microsoft VBScript  Fehlerbeschreibung: Typenkonflikt: 'Replace'    Fehler in Zeile 76.
Zeile 76 ist das Replace oben.

Danke und Gruß
Arne

Drucke diesen Beitrag

  ui.router - Fragen über Fragen...
Geschrieben von: Till - 25.02.2016, 14:22 - Forum: JavaScript / JavaScript Frameworks / Ajax - Antworten (4)

Auch auf die Gefahr hin das ich es selber werd lösen können schmeiß ich mal als Neuling folgende Fragen in den Raum:

Frage 1)
Ich habe ein Template projects.html

Code:
<div ng-controller="projectsCtrl as projectsCtrlInstance">

<h4>Projects</h4>

<ul>
    <li ng-repeat="p in projects">
     <!-- {{$index + 1}}. -->
     <p><strong ng-bind="p.title"></strong></p>  
     <p><span ng-bind="p.dir"></span></p>
    </li>

</ul>


</div>

Und einen stateProvider:
Code:
...
        
    .state( {
      name : 'projects',    
      url: "/projects/:parentProjectID",
      views: {
        "viewA": { templateUrl:  AppData.__DIR__+'templates/projects.html',
                   controller:'projectsCtrl'  },
        "viewB": { templateUrl:  AppData.__DIR__+'templates/project.html' }/**/
       }
     })    
...

Wie man sehen kann ist der Controller projectsCtrl im Template und im stateProvider definiert und wird demzufolge bei mir auch zweimal ausgeführt!
Wo ist der richtige Platz?
Im template kann ich mehrere Controller verwenden und diese auch außerhalb des views, so wie ich es verstehe ist dann der controller im stateProvider ein optionaler state-bezogener zusätzlicher Controller...?

...und damit zu Frage zwei...2)
Im Template main.html habe ich einen Link um die oben unter 1 genannte Geschichte aufzurufen:
Code:
<a ui-sref="projects({projectID:'0', reload:true})"><span>Projects</span></a>
Mein Problem hier ist, daß ich den Link ZWEIMAL klicken muß bis der Scope gerendert wird, also die gewünschten Projekte angezeigt werden.
Laut console werden die Daten jedoch eigentlich schon beim ersten klick in den scope geladen.
Code:
.controller('projectsCtrl', [ '$scope', '$element', '$compile', '$http', '$location', 'API_CLIENT_URL', '$stateParams',
                       function($scope,   $element,   $compile,   $http,   $location,   API_CLIENT_URL, $stateParams) {
            /* todo promise4 */               
       var cb = '__JSONPCALLBACK_projects_'+mt_rand(1000,9999);                    
       frdl.cbs[cb] = function(result){
            console.log('Fetching project');
       /*     frdlBounce(result);
             alert(JSON.stringify(result)); */
         $scope.projects = result.projects;    
/* hilft auch nicht: frdl.UI.Compile(1); */
        $compile($element.contents())(angular.element($element).scope());  
    
          frdl.cbs[cb]=undefined;
      } ;    
      if('undefined'===typeof $stateParams.parentProjectID)$stateParams.parentProjectID=0;
       var cmd = 'frdl project childs --project='+$stateParams.parentProjectID+' -bd --callback=frdl.cbs.'+cb+' --expect=jsonp';
      /* alert(JSON.stringify($stateParams)); */
      
        
        $.cliExec(cmd);      
  }])


Ich glaube hier noch irgendein Verständnisproblem zu haben?
Ich fasse nochmal zusammen:
Ich muß zweimal klicken damit der View upgedated wird.

Drucke diesen Beitrag