繁体   English   中英

AngularJS-将HTML元素的范围更改为新范围

[英]AngularJS - change scope of HTML element to new scope

我正在学习AngularJS,并做了一些怪异的实验,以了解有关scopedirectivesdom概念。

目的 :将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);

});

我的问题是:

  1. 如果我不创建new scope并且不使用$timeout函数进行$compile ,那么我的视图dinnerbox期望的那样用dinnerbox更新
  2. 如果我创建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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM