我有使用ngRepeater显示的数组,但是使用此指令时,我使用的是ngInit指令,该指令执行应返回要显示的对象的功能。一切工作正常,但是当我在数组中添加新值的“新建”按钮时,仅在我认为应根据数组值的量执行函数后,才执行函数“SetPreview”。我怎样才能做到这一点?
用户界面:
<body ng-app>
<ul ng-controller="PhoneListCtrl">
<button ng-click="add()">Add</button>
<li ng-repeat="phone in phones" ng-init="displayedQuestion=SetPreview(phone);">
{{displayedQuestion.name}}
<p>{{displayedQuestion.snippet}}</p>
</li>
</ul>
</body>
控制器:
function PhoneListCtrl($scope) {
$scope.phones = [
{"name": "Nexus S",
"snippet": "Fast just got faster with Nexus S."},
{"name": "Motorola XOOM™ with Wi-Fi",
"snippet": "The Next, Next Generation tablet."},
{"name": "MOTOROLA XOOM™",
"snippet": "The Next, Next Generation tablet."}
];
$scope.add = function(){
this.phones.push({name:'1', snippet:'n'});
};
$scope.SetPreview = function(phone)
{
//here logic which can take object from diffrent location
console.log(phone);
return phone;
};
}
示例在这里-jsfiddle
编辑:
这是一个更复杂的示例:
->现在,电话集合为空,当您单击添加按钮时,添加了新项并将其设置为可编辑(您可以在文本字段中更改值),并且在执行ngRender时SetPreview函数返回可编辑对象(就像预览一样工作)。现在尝试再次单击“添加”按钮,您会看到仍然将第一项的可编辑值显示给用户,但是我想刷新整个ng-
repeater。
您正在遇到Angular性能功能。
本质上,Angular可以看到数组中的元素(例如,“ A”)是相同的对象引用,因此它不会再次调用ng-
init。这是有效的。即使将旧列表连接到新列表中,Angular也会看到它是相同的引用。
$scope.add = function(item) {
var newItems = [];
angular.forEach($scope.items, function(obj){
this.push({val:obj.val});
},newItems)
newItems.push({val:item})
$scope.items = newItems;
};
我不建议您摆弄小提琴,但是您应该找到不同于ng-init的方法来触发代码。
本文向大家介绍AngularJS ngRepeat,包括了AngularJS ngRepeat的使用技巧和注意事项,需要的朋友参考一下 示例 ng-repeat 是Angular中的内置指令,它使您可以迭代数组或对象,并使您能够为集合中的每个项目重复一次元素。 ng-重复数组 其中: item =集合中的单个项目 itemCollection =您要迭代的数组 ng-重复一个对象 其中: key
问题内容: 我用来渲染一个。我的控制器看起来像这样: 如您所见,我正在定期更新阵列。但是,我的观点是这样构造的: 问题是,当我更新时,它不会用新数据重新渲染我的表。 我将如何解决这个问题? 问题答案: 您是否将更新包入 ?这应该可以解决问题。
问题内容: 我有项目清单。一个项目可以是很多东西,比如说列表是这样的: 现在,我想使用ngRepeat指令渲染列表,该指令将根据对象的类型使用模板(多态渲染)。可以做到吗? 可能类似( ng-use 是一个 假设 指令): 问题答案: API参考:http://docs.angularjs.org/api/ng.directive: ngSwitch
我正试图找到在与自定义指令一起使用的ngRepeat中获取索引位置的最佳方法。我试图解决的问题是,对于ngRepeat的每次迭代,我希望知道我在迭代中的位置,这样我就可以根据索引位置创建自定义模板。 除非有更好的方法,否则我将尝试基于指令中的此留档执行此功能: http://docs.angularjs.org/guide/directive 我很难理解这个陈述到底在告诉我什么。所以,我试图做的是
问题内容: 我正在尝试编写一些搜索输入,以使用ngResource从数据库中获取数据。 数据在页面上显示为ng-repeat,但是当我执行搜索并且$ scope已更新时,该视图未更新并显示旧数据。 这是代码: main.html(活动视图) main.js searchbar.js 当它启动时,它从数据库中获取所有数据并正确显示它们,当我尝试进行搜索时,$ scope.eventi会更新(我可以从
问题内容: 我正在使用带有过滤器的ng-repeat指令,如下所示: 我可以看到渲染结果很好;现在我想在控制器上对该结果运行一些逻辑。问题是如何获取结果项引用? 更新: 只是为了澄清一下:我正在尝试创建自动完成功能,我有以下输入内容: 然后过滤的结果: 现在我要浏览结果并选择其中一项。 问题答案: 更新 :这是一种比以前更简单的方法。 然后是可访问的。