2012-07-31 55 views
5

我在基于内容脚本的chrome扩展中使用angularjs模板时遇到了一个奇怪的问题。我进入一个无限循环。当我使用内联模板(使用模板属性和字符串)时,它工作正常。任何人都可以建议我做错了什么?chrome扩展中的angularjs模板

的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

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

当我使用app.js在线tempate,它工作正常。

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

曾经也贴在angularjs谷歌组 https://groups.google.com/d/topic/angular/A_SVYZWPKe8/discussion

回答

4

它看起来像我想通了。

首先在manifest.json文件中声明模板文件。

"web_accessible_resources" :[ 
     "contact.html" 
    ] 

然后使用chrome.extension.getURL方法获取的绝对URL模板文件

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

从app.js chrome.extension.getURL不工作 – apueee 2014-12-31 04:26:05

+0

我的角度错误消息URL是不可信的,所以我添加了$ sce.trustAsResourceUrl: ''' $ sce.trustAsResourceUrl(chrome.extension.getURL('html/drive-properties.html')) ''' – Paul 2016-06-17 09:16:07