过滤父级时,输入正在丢失其值

时间:2015-03-02 16:47:13

标签: javascript angularjs angularjs-ng-repeat angularjs-filter

基本上,我有一个指令(称之为站点,即位置),它有许多用于收集数据的输入。页面上可能有数百个,所以我有一个搜索输入,可以快速找到特定的网站。

我的问题是,无论何时使用搜索,过滤掉的项目都会丢失为其输入的所有数据。我希望过滤的项目能够隐藏"隐藏"并保持他们的价值观,但似乎他们正在重新渲染。我做错了什么,或者我怎么能以正确的方式做到这一点?

Here's a very simple Plunker of my issue

HTML:

<body ng-controller="MainCtrl">
  <input type="search" ng-model="q" placeholder="filter sites...">
  <my-directive ng-repeat="site in sites | filter:q" site="site"></my-directive>
</body>

剧本:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.sites = [
    {name: 'site 1', id:'site1'},
    {name: 'site 2', id:'site2'}
    ];
});

app.directive('myDirective', function($compile) {
  return {
    restrict: 'E',
    scope: {
      site: '=',
    },
    template: '<h1>{{site.name}}</h1>Value: <input name="{{site.id}}">'
  };
});

1 个答案:

答案 0 :(得分:1)

没有任何内容将您的输入值绑定到模型。当角度重绘UI时,它会创建新元素,因此,如果不使用ng-model(或事件)来存储值,则不会存储以前键入的任何内容

试试这个:

template: '<h1>{{site.name}}</h1>Value: <input name="{{site.id}}" ng-model="site.SomeProperty">'

updated plunker