2015-03-31 79 views
1

我需要Angular Js框架来实现Chrome扩展。角j不适用于Chrome扩展

我已经通过背景页面注入了AJS script

但是,当我在内容脚本中使用角度指令它只是不工作。

我也尝试初始化Angular js手动使用Bootstrap命令,但也没有奏效。

任何帮助,将不胜感激。

其实我试图将纯JS开发的现有扩展转换成Ajs框架。 我从后台页面的Chrome标签中注入了AJs脚本,如下所示。

chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {  
    if (request.Arg == 'INIT') { 
     $.when(
     $.ajax({ 
     url: server + '/Cscript.js',// Content Script 
       dataType: 'text' 
     }),   
     $.ajax({ 
      url: server +'/util.js',// Jquery and other 3drparty 
      dataType: 'text' 
     }), 
     $.ajax({ 
      url: server +'/angular.js', 
      dataType: 'text' 
     }) 
).then(function(Cscript,Ujs,ang) { 
       chrome.tabs.executeScript(sender.tab.id, {code: Ujs[0]+ang[0]+Cscript[0], allFrames:true}); 
       sendResponse(config); 
      }); 
    } 

在内容脚本我创建具有与属性

$("#SidePan").attr('ng-app','TApp'); 
$("#SidePan").attr("ng-csp", "true"); 

顶根DIV我创建两个控制器CTRL1和CTRL2为TAPP侧边栏DIV。
和我#SidePan

$("#SidePan").html('<div ng-controller="Ctrl1">{{2+3}}</div>) 

可正常工作,增加了股利如下但是,当我在buttonclick改变#SidePan HTML如下

$("#SidePan").html('<div ng-controller="Ctrl2">{{4+5}}</div>) 

这不会计算表达式。我是否做了任何错误的Ajs

+1

请给我们一些代码。除了不正确的用法外,没有理由不应该这样做。 – 2015-03-31 08:09:58

回答

1

$("#SidePan").html('<div ng-controller="Ctrl2">{{4+5}}</div>)将无法​​正常工作。 AngularJS不监视DOM,因此它会知道你在以外的地方操作它。 停止混合jQuery和AngularJS。您需要使用$scope s,ng-click以及可能的一些自定义指令来实现此目的。