2012-07-31 10 views
5

Me encuentro con un problema extraño al utilizar la plantilla angularjs en una extensión de Chrome basada en script de contenido. Voy en un bucle infinito. Cuando uso una plantilla en línea (usando un atributo de plantilla con una cadena), funciona bien. ¿Alguien puede sugerir lo que estoy haciendo mal?templates angularjs en la extensión de cromo

manifest.json

{ 
    "name": "Content Script Cross-Domain XMLHttpRequest Example", 
    "version": "2.0.0", 
    "manifest_version": 2, 
    "description": "Demonstrates making cross domain requests from a content script by putting Twitter trends on Google News.", 
    "permissions": [ 
    "http://localhost:9393/*" 
    ], 
    "icons": { 
    "48" : "sample-48.png", 
    "128" : "sample-128.png" 
    }, 
    "content_scripts": [ 
    { 
     "matches": ["http://news.google.com/*","*://mail.google.com/*"], 
     "js" : ["lib/jquery-1.6.4.min.js","lib/angular-1.0.1.min.js", "app.js","contentscript.js"] 
    } 
    ] 
} 

app.js

angular.module('myApp', []). 
    config(['$routeProvider', function($routeProvider) { 
    console.log('inside angular.module'); 
    $routeProvider. 
     when('/', {templateUrl: 'contact.html', controller: AppController}). 
     otherwise({redirectTo: '/'}); 
}]); 


function AppController($scope){ 
    console.log('inside AppController'); 
} 

contentscript.js dentro

$(this).append('<div id="gmeAppContainer">' 
           + '<div ng-view></div>' 
           + '</div>'); 
var rootEle = $(this).find('#gmeAppContainer'); 
angular.bootstrap(rootEle,['myApp']); 

Cuando uso tempate en línea en app.js, funciona bien.

when('/', {template: '<div>This is inline template </div>', controller: AppController}). 

también han publicado en AngularJS grupo de Google https://groups.google.com/d/topic/angular/A_SVYZWPKe8/discussion

Respuesta

4

Parece que lo he descubierto.

Primero declare el archivo de plantilla en el archivo manifest.json.

"web_accessible_resources" :[ 
     "contact.html" 
    ] 

A continuación, utilice el método chrome.extension.getURL Para obtener la URL absoluta al archivo de plantilla

when('/', { controller: AppController, templateUrl : chrome.extension.getURL('contact.html')}). 
+0

de app.js no chrome.extension.getURL trabajo – apueee

+0

me dieron el mensaje de error angular que la URL no es de confianza, por lo que agregó $ sce.trustAsResourceUrl: '' ' $ sce.trustAsResourceUrl (chrome.extension.getURL ('html/drive-properties.html')) ' '' – Paul

Cuestiones relacionadas