基本上,我有一个指令(称之为站点,即位置),它有许多用于收集数据的输入。页面上可能有数百个,所以我有一个搜索输入,可以快速找到特定的网站。
我的问题是,无论何时使用搜索,过滤掉的项目都会丢失为其输入的所有数据。我希望过滤的项目能够隐藏"隐藏"并保持他们的价值观,但似乎他们正在重新渲染。我做错了什么,或者我怎么能以正确的方式做到这一点?
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}}">'
};
});
答案 0 :(得分:1)
没有任何内容将您的输入值绑定到模型。当角度重绘UI时,它会创建新元素,因此,如果不使用ng-model
(或事件)来存储值,则不会存储以前键入的任何内容
试试这个:
template: '<h1>{{site.name}}</h1>Value: <input name="{{site.id}}" ng-model="site.SomeProperty">'