大佬教程收集整理的这篇文章主要介绍了jquery – $compile(html)(范围)忽略我手动创建的范围,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
HTML:
<div id="container" ng-controller="MyCtrl"> {{model.namE}} </div>
JavaScript的:
var app=angular.module('myApp',[]); var $injector =angular.injector(['ng']); $injector.invoke(function($compile,$rootScopE) { var html = '<div ng-controller="MyCtrl1">{{model.namE}}</div>' var scope = $rootScope.$new(); scope.model = {name:'MyCtrl1'}; //alert(scope.model.Name); var e3 = $compile(html)(scopE); $('#container').append(e3[0]); }); function MyCtrl($scopE) { $scope.model={}; $scope.model.name = 'MyCtrl'; }; function MyCtrl1($scopE) { //alert('MyCtrl1'); };
Here is a fiddle showing the behavior
如你所见,它呈现两个’MyCtrl’字符串.即angular忽略我手动创建的范围对象.
问题是:如何使$compile使用我创建的范围?
更新:丑陋的解决方法:
在调用$compile之后再次应用模型:
angular.element(e3[0]).scope().$apply(function(scopE) { scope.model = {name:'MyCtrl1'}; });
app.run(function($compile,$rootScopE) { var html = '<div ng-controller="MyCtrl1">{{model.namE}}</div>' var scope = $rootScope.$new(); scope.model = {name:'MyCtrl1'}; //alert(scope.model.Name); var e3 = $compile(html)(scopE); scope.$apply(); $('#container').append(e3[0]); });
范围.需要$apply(),但我不确定原因.希望其他人可以向我们解释.
以上是大佬教程为你收集整理的jquery – $compile(html)(范围)忽略我手动创建的范围全部内容,希望文章能够帮你解决jquery – $compile(html)(范围)忽略我手动创建的范围所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。