如何绑定元素一次?

时间:2016-05-17 12:49:41

标签: angularjs

我想在我的angulajs项目中将项目绑定到视图一次。

这是plunker

这里是模板html:

<div class="form-group">
  <div class="col-xs-8">
    <span ng-repeat="city in ma.cities" class="view" ng-if="city.Id == ma.selected">
             {{::city.Name}}
     </span>

    <select class="form-control" 
    ng-model="ma.selected" 
    ng-options="city.Id as city.Name for city in ma.cities">

    </select>
  </div>
</div>

我希望city.Name只绑定到模板html一次。 但是当我更改select元素中的item时,city.Name也会更新。

我尝试使用一次绑定操作符::,但它没有帮助。

如何只将元素绑定到视图一次并阻止更新?

3 个答案:

答案 0 :(得分:2)

价值不变。你有一个ng-if嵌套在ng-repeat中,当城市被改变时,显示的项目会发生变化。

如果我正在关注您要执行的操作,我会在创建控制器时将当前选定的城市存储到控制器上的属性并显示该属性,从而消除ng-repeat和ng-if in这个过程。

答案 1 :(得分:1)

我同意 Mike ,这个问题有点含糊不清。我想你要求的是:

<span>{{::ma.cities[ma.selected].Name}}</span>

但话又如此,正如迈克所说,你可以用另一个范围变量实现这个目标,这可能是一个更清晰的解决方案。

答案 2 :(得分:0)

正如你所说,我修改了html模板:

 <span ng-repeat="city in ::ma.cities" class="view" ng-if="::city.Id == ma.selectedId">
                 {{city.Name}}
         </span>

这是plunker