Die Angular-Direktive zum Anzeigen von Flash über das <object> -Tag bewirkt, dass Flash versucht, {{expression}} zu laden.

Ich habe eine AngularJS-Direktive:

myApp.directive('movie', function(){
return {
    restrict: 'E',
    replace: true,
    scope: { product:'=', codebase: '@' },
    template: '<object style="width:550px;height:320px;" name="movie" id="movie" codebase="{{codebase}}"' +
              ' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" tabindex="-1">' +
              '<param value="{{product.flashURL}}" name="movie">' +
              '<param value="true" name="play">' +
              '<param value="true" name="menu">' +
              '<param value="transparent" name="wmode">' +
              '<param value="noscale" name="scale">' +
              '<embed wmode="transparent" style="width:550px;height:320px;" src="{{product.flashURL}}" scale="noscale"' +
              ' pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" name="movieEmbed" menu="true" id="movieEmbed">' +
              '</object>'
};});

Es wird wie folgt verwendet:

<movie product="productInScope" codebase="http://flashcodebase..." />

Mit dieser Anweisung habe ich das Problem behoben, indem ich einfach diesen HTML-Code in eine Ansicht aufgenommen habe. Dies ist: Sobald das Objekt-Tag gerendert wird, versucht Flash, einen Film unter der URL "{{product.flashURL}} zu laden. ". Das schlägt offensichtlich fehl und bis Angular den Ausdruck interpoliert, ist es zu spät.

Leider hat die Umstrukturierung als Richtlinie das Problem nicht gelöst. Interessanterweise scheint der Ausdruck {{codebase}} immer zu funktionieren; Vielleicht wird es zuerst ausgewertet, wodurch der Flash geladen wird und versucht wird, die URL abzurufen.

Wie würden Sie diese Anweisung umschreiben (oder einen einfacheren Ansatz verwenden), damit das Objekt-Tag erst erstellt wird, wenn die flashURL verfügbar ist?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage