javascript – 在DOM元素上创建角度范围

前端之家收集整理的这篇文章主要介绍了javascript – 在DOM元素上创建角度范围前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

我需要做类似的事情:

... = thirdPartyCallbackfunction(domElement){
        var myNewScope = $scope.$new(true);
        myNewScope.title = 'Hello';
        domElement.scope = myNewScope; //???
}

此外,我尝试手动将ng-scope添加到DOM元素,但ng-inspector向我显示它没有创建新的子范围.

$(domElement).scope();

尝试时给我根本范围.

docs也不是很有帮助.

最佳答案
你应该使用$compile服务.

HTML:

控制器:

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();
}]);

$compile用于评估HTML片段或DOM元素(包装在jqLit​​e对象中).例如,您可以使用一些内联绑定的html模板代替DOM元素:
var content =“< ul>< li ng-repeat ='city in cities'> {{city}}< / li>< / ul>”
var list = angular.element(content); //从上面的模板创建jqLit​​e对象;
下一步是使用$compile服务对象,该对象是一个返回另一个函数函数,该函数随后将用于生成内容.
var compileFn = $compile(list);

获得编译功能后,调用它将范围对象作为即将进行的评估的上下文传递,基本上将元素与范围相关联.
compileFn(范围);
现在模板中包含的绑定/表达式将使用您传递的范围进行评估并更新jqLit​​e对象(列表),但是没有返回值,因此在这种情况下您必须手动将更新的列表对象添加到DOM .希望这能澄清一下服务.

原文链接:https://www.f2er.com/jquery/428367.html

猜你在找的jQuery相关文章