2013-02-13 140 views
2

我知道關於此主題已經有很多問題,但我無法讓我的示例工作。angular.js指令與隔離範圍

請參閱plnkr.co#ua32dkF7fz6X2fA0ZAw3的示例。

每個傳情者都有一些額外的信息,當用戶點擊其中一個挑逗者時應該會出現。然而,一旦我點擊其中一個挑逗者,其他信息就會出現在每個挑逗者的下方。我只想在他點擊的一個傳情下方展示他們。

我很確定這是因爲指令共享相同的父範圍。我怎樣才能保持isActive變量對每個傳情者都是私密的?

回答

5

我會做這樣的:

1)HTML變化:

<teaser ng-repeat="teaser in teasers" teaser="teaser"></teaser> 

2)更改指令:

restrict: 'E', 
replace: true, 
scope: { 
    teaser: '=' 
}, 
controller: function ($scope) { 
    $scope.isActive = false; 
    $scope.select = function(teaser) { 
    $scope.isActive = !$scope.isActive; 
    }; 
} 

演示:http://jsbin.com/aqehew/1/

+0

謝謝!按預期工作。 – zemirco 2013-02-13 14:12:25

+0

還有一件事:你爲什麼使用'controller'而不是'link'函數? – zemirco 2013-02-15 07:14:34

+0

我傾向於使用控制器,當:不使用'$ watch'或使用隔離範圍。 – Yoshi 2013-02-15 08:16:47

1

這應做到:http://plnkr.co/edit/EfB3n14Hwk5uijsrp1aR

我所做的是創建指令一個新的範圍,以及移動的主動變的指令範圍。

+0

謝謝您回答。我可能是錯的,但我認爲@Yoshi的回答是更有棱角的風格。 – zemirco 2013-02-13 14:13:56