[英]AngularJS - change scope of HTML element to new scope
我正在学习AngularJS,并做了一些怪异的实验,以了解有关scope
, directives
和dom
概念。
目的 :将HTML元素<div id="grocery">
的范围更改为新创建的子范围”
index.html
<html ng-app="eggly" ng-controller="rootCtrl">
<body>
<div id="grocery">
{{box}}
</div>
</body>
</html>
rootCtrl
eggly.controller('rootCtrl',function($scope,$timeout,$compile){
$scope.box = "lunchbox"; --> first assign box = lunchbox
$timeout(function(){
//delete $scope;
var newScope = $scope.$new(); --> create a new scope
newScope.box = "dinnerbox"; ---> Assign new value
$compile($('#grocery'))(newScope); --> compile div with new scope
//newScope.$apply(); --> I think $timeout already do $apply so commented out
},1000);
});
我的问题是:
new scope
并且不使用$timeout
函数进行$compile
,那么我的视图dinnerbox
期望的那样用dinnerbox
更新 new scope
和$compile
在$timeout
功能,那么我的观点显示我的旧值即lunchbox
然而铬控制台告诉我angular.element($0).scope().box
显示我dinnerbox
范围($暂停执行后)。 我做错了什么?
调用$compile
, #grocery
内容是lunchbox
而不是{{ box }}
。 目前,已经链接了ng-controller
指令,并且绑定信息无法作为纯HTML获得。
通过使用指令替代{{ }}
绑定可以克服此缺点:
<div id="grocery"><span ng-bind="box"></span></div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.