Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在DOM元素上创建角度范围_Javascript_Jquery_Angularjs_Dom - Fatal编程技术网

Javascript 在DOM元素上创建角度范围

Javascript 在DOM元素上创建角度范围,javascript,jquery,angularjs,dom,Javascript,Jquery,Angularjs,Dom,我需要创建一个新的角度范围并将其附加到DOM元素。我正在修改一个第三方控件,所以我没有选择只使用指令 我需要做一些事情,比如: ... = thirdPartyCallbackfunction(domElement){ var myNewScope = $scope.$new(true); myNewScope.title = 'Hello'; domElement.scope = myNewScope; //??? } 此外,我还尝试将ng s

我需要创建一个新的角度范围并将其附加到DOM元素。我正在修改一个第三方控件,所以我没有选择只使用指令

我需要做一些事情,比如:

... = thirdPartyCallbackfunction(domElement){
        var myNewScope = $scope.$new(true);
        myNewScope.title = 'Hello';
        domElement.scope = myNewScope; //???
}
此外,我还尝试将
ng scope
手动添加到DOM元素中,但ng inspector告诉我它没有创建新的子作用域

$(domElement).scope();
在尝试时给我根范围


这也不是很有帮助。

您应该使用$compile服务

HTML:

$compile
用于计算HTML片段或DOM元素(包装在jqLite对象中)。例如,您可以使用一些带有内联绑定的html模板,而不是DOM元素:
var content=“
  • {{city}
” 变量列表=角度元素(内容)//从上面的模板创建jqLite对象 下一步是使用
$compile
服务对象,这是一个返回另一个函数的函数,该函数随后将用于生成内容。
var compileFn=$compile(列表)

一旦拥有了编译函数,就可以调用它,并将scope对象作为即将进行的计算的上下文传递,基本上是将元素与作用域链接起来。
compileFn(范围)

现在,模板中包含的绑定/表达式将使用您传递给它的作用域进行评估,并更新jqLite对象(
list
),但没有返回值,因此在这种情况下,您必须手动将更新的
list
对象添加到DOM中。希望这能澄清一下服务。

您想创建一个元素还是将一个范围项绑定到一个现有的元素?元素已经创建,在DOM中,我有一个对该元素的引用。现在我想创建一个新的作用域并将其附加到它。所以$compile是您需要的。希望这对其他人有所帮助,这真的很难找到搜索词!你能解释一下发生了什么事吗?基本上,它将字符串或html字符串编译成一个模板,并使您通常也输入要将其链接到范围的范围,例如$compile(html)(范围)
<div ng-app="myApp" ng-controller="myCtrl">
  <p> Top scope: {{number}}</p>
  <p> Top scope: {{myProp}}</p> <!-- Undefined in the top-level scope -->
  <div id = "child">
    <p> New scope: {{myProp}}</p>
  </div>
</div>
angular.module("myApp", []).controller("myCtrl", ["$scope", "$compile", function($scope, $compile){
  $scope.number = 35;
  var myFunc = function(){
    var innerElem = angular.element(document.querySelector("#child"));
    var innerScope = $scope.$new();
    innerScope.myProp = 55;
    var compileFn = $compile(innerElem);
    compileFn(innerScope);
  }
  myFunc();
}]);