2015-03-31 81 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以及可能的一些自定義指令來實現此目的。