在AngularJS中渲染嵌套对象时更改范围

时间:2013-03-12 21:49:34

标签: angularjs

在Handlebars中,您可以更改当前范围,因此如果您有一个对象:

walrus: {
  bubbles: 7,
  zombies[
    {name: 'Jim', hobby: 'pinocle'},
    {name: 'Cassandra', hobby: 'privateering'},
    {name: 'Ke$ha', hobby: 'yelling'}
  ],
  address: {
    city: 'Fresno',
    state: 'CA'
  }
}

然后我可以将该上下文发送到这样的模板:

<article class='walrus'>
  <h2>I have {{ bubbles }} bubbles!</h2>
  <ul>
    {{#each zombies}}
      <li>{{ name }} likes {{ hobby }}
    {{/each }}
  </ul>
  <div class='address'>
    {{#with address}}
      <p>{{city}}, {{state}}</p>
    {{/with}}
  </div>
</article>

但是在Angular,如果我设置$ scope.walrus = walrus,我最终得到了这个:

<article class='walrus'>
  <h2>I have {{ walrus.bubbles }} bubbles!</h2>
  <ul>
      <li ng-repeat="zombie in walrus.zombies">{{ zombie.name }} likes {{ zombie.hobby }}
  </ul>
  <div class='address'>
    <p>{{walrus.address.city}}, {{walrus.address.state}}</p>
  </div>
</article>

有没有办法让Angular识别它的范围,而不需要额外的walrus.zombie.或(最糟糕的)walrus.address.

2 个答案:

答案 0 :(得分:2)

  

有没有办法让Angular识别它的范围,而不需要额外的walrus.zombie.或(最糟糕的)walrus.address.

我不知道有什么方法可以做到这一点。

答案 1 :(得分:0)

对于没有嵌套的'海象',你可以这样做:

angular.extend($scope, $scope.walrus);

这将使用walrus对象扩展$ scope,现在您可以在模板中使用{{bubbles}}!

我使用了延伸,但我真的不知道这是否是你想要的正确方法!