7

好的,所以我已经有一段时间了。

在红色框中,我想要一些有角度的功能(ng-repeats,数据绑定等......)当双击任何网页上的文本时会出现这个红色框。但是,我似乎无法找出如何将角度连接/连接到红色弹出窗口中的文本框示例。

在 chrome 的徽章弹出窗口以及选项页面等上使用 angular 似乎相当简单……但我似乎无法让它在这种情况下工作。

双击文本后将 div 元素添加到任何网页的 DOM 的示例

inject.js(作为内容脚本包含在下面的清单中)

    var displayPopup = function(event) {

    var mydiv = document.createElement('div'); 
    var $div = $('#divid').closest('.sentence');
    mydiv.innerHTML = getSelectionText();
    mydiv.innerHTML += currentSentence.innerHTML;

        //Next line is where I want to apply some angular functionality
        mydiv.innerHTML += '<div ng-app="myApp" scroll-to-me><input type="text" ng-model="data.test"><div ng-model="data.test">{{data.test}}</div></div>';



    mydiv.id = "popup";
    mydiv.style.position = "fixed";
    mydiv.style.top = event.clientY + "px";
    mydiv.style.left = event.clientX + "px";
    mydiv.style.border = "4px solid #d00";
    mydiv.style.background = "#fcc";

        $("body").append(mydiv);

    $.getJSON('http://local.wordly.com:3000/words/definitions/test', function(data) {
      console.log(data);
    });
  }

我的manifest.json内容脚本数组看起来像:

"content_scripts": [
    {
      "matches": [
        "https://www.google.com/*"
      ],
      "css": [
        "src/inject/inject.css"
      ]
    },
    {
      "matches": [
        "http://*/*", 
        "https://*/*"
      ],
      "js": [
        "js/angular/angular.js", "app.js", "js/jquery/jquery.js", "src/inject/inject.js"
      ]
    }
  ]

app.js,也包含在清单中,仅用于启动和运行一些骨架应用程序。

var myApp = angular.module("myApp", []);

myApp.factory('Data', function(){
    //return {message: "I'm data from a service"};
});

myApp.controller("SecondCtrl", function($scope, $http){

});
4

1 回答 1

11

如果您在页面加载后注入标记,则需要手动引导。ng-app只有在加载文档时 Angular 存在时,它才会运行。之后,将模块名称传递给 angular.bootstrap:

angular.bootstrap(mydiv, ['myApp'])

例子

于 2013-05-06T18:15:14.453 回答