gpt4 book ai didi

javascript - 在 Angular JS 中做同样的更好的方法

转载 作者:行者123 更新时间:2023-11-30 06:27:20 25 4
gpt4 key购买 nike

tobeclicked 列表被点击时,它会从中获取数据并粘贴到查找空列表中。它实际上需要找到一个空列表并更新它的地方。值和列表将有真实的图像。因此,当单击图像时,它会找到空列表并在那里克隆。我无法更改空列表的结构,因为它将具有要克隆的图像大小的空边框。所以用户可以知道他在哪里添加。

HTML :

<div ng-app='myModule'>
<div class="tobeclicked">
<ul>
<li thisclicked data-value="img1">img 1</li>
<li thisclicked data-value="img2">img 2</li>
</ul>
</div>
<br>
<div class="find-empty">
<ul>
<li class="empty" data-value=""></li>
<li class="empty" data-value=""></li>
</ul>
</div>
</div>

JS

var myModule = angular.module('myModule', []);
myModule.directive("thisclicked", function () {
var thisclicked = function(scope,element,attrs) {
element.bind('click',function(){
var empty = $('.find-empty').find('.empty').first();
empty.html(element.html());
empty.attr('data-value',attrs.value);
empty.removeClass('empty');
});
};
return thisclicked;
});

Fiddle ( http://jsfiddle.net/CQzu5/ ) 是我想做的粗略演示。希望有一种 Angular 方法可以做到这一点。 (请注意, fiddle 不是实际代码,只是我想做的事情的例子。实际代码有调用 Controller 的指令,所以数据基本上是在 Controller 中获取的。我不确定这是否是正确的方法,但我是愿意接受建议。

这张图片应该也有帮助(实际应用):

enter image description here

最佳答案

我不会使用 DOM 来存储您的数据。通过服务从 Controller 访问它。使用两个列表:一个包含基本数据,另一个包含可扩展的“选定数据”。这开启了在每个组的列表上使用 ng-repeat 的能力。

<html ng-app='myModule'>
<div ng-controller='main'>
<div>
<ul>
<li ng-repeat="item in itemService.pickedItems">{{description}}</li>
</ul>
</div>
<br>
<ul>
<li ng-repeat="item in itemService.items" onclick='addToPicked({{item}})'>{{description}}</li>
</ul>
</div>
</html>

和 Controller

function main($scope, itemService) {



$scope.addToPicked = function(item) {
itemService.addToPicked(item);
};

}

现在是 Controller 引用的服务

var myModule = angular.module('myModule', []);
myModule.factory('itemService', function() {
var itemService= {};
itemService.pickedItems = []; //
itemService.items = [
{description:'item 1', imageName:'item1.jpeg'},
{description:'item 2', imageName:'item2.jpeg'},
{description:'item 3', imageName:'item3.jpeg'} ];


itemService.addToPicked = function(item) {
picKedItems.push(item);
};
return itemService;
});

这意味着您的应用将保留这些项目的一份副本,即使它们存在于多个 Controller 中也是如此。

关于javascript - 在 Angular JS 中做同样的更好的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20250575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com