【发布时间】:2023-03-07 06:58:05
【问题描述】:
我使用这个 html 代码渲染出几个容器元素。 ng-repeat="card in cards" 元素实际上并没有被渲染,因为没有 $scope.cards;
<div id="container" ng-controller='DemoController'>
<div ng-repeat = "movie in movies" class="repeat">
<a ng-click="addMovie()" ui-sref=".container-big" >More info</a>
<div ng-repeat="card in cards" my-card="card"></div>
</div>
</div>
如果用户点击a,它会触发addMovie() 函数,
$scope.addMovie = function() {
$scope.cards.push(new Card());
};
这反过来创建了一张新卡片,因为现在有一张卡片 <div ng-repeat="card in cards" my-card="card"></div> 在 .repeat 元素中创建。
上述元素有一个名为my-card="card" 的指令。因此,当创建元素时,它也会触发指令
angular.module('myApp').directive('myCard', function(){
return {
restrict: 'A',
template: '<div ui-view="container-big"></div>',
replace: true,
transclude: false
};
});
替换这个元素
<div ng-repeat="card in cards" my-card="card"></div>
用这个元素
<div ui-view="container-big"></div>
a 也有一个ui-sref=".container-big",它将一个模板注入到新创建的<div ui-view="container-big"></div>。
在这里查看它的实际应用 > http://plnkr.co/edit/B7CRjvdQ9paytwl5csKi?p=preview
我的问题是,我可以限制点击动作
<a ng-click="addMovie()" ui-sref=".container-big" >More info</a>
只到被点击的元素。因此,不要在所有元素上触发所有 addMovie() 函数。我只在点击的元素上触发它,导致只有一个容器发生变化。
【问题讨论】:
-
$scope.addMovie或者你指的是$scope.addCard? -
抱歉,编辑帖子时出现小错误。
$scope.addCard不存在,我指的是$scope.addMovie。
标签: javascript angularjs