내 목록 아래에는 하단의 div 중 하나에 removePortfolio
기능이 있습니다. 이 함수의 역할은 ng-hide="tickerRemoved"
모든 목록 항목이 아닌 1 개의 목록 항목에 대해서만 활성화하는 것 입니다.
HTML 요점 : https://gist.github.com/leongaban/cf72e5d0229155dd011f
지침 요점 : https://gist.github.com/leongaban/22a8feb9dbeea0b90135
<ul ng-show="loadingTickersDone" class="tickers-list">
<li class="ticker-li"
ng-repeat="ticker in tickers"
ng-hide="tickerRemoved"
ng-class="{'selected':toggleTicker.item == $index}"
ng-mouseleave="hideTickerOptions()">
<div class="ticker"
ng-click="toggleTicker.item = $index;
selectTicker(ticker.ticker);
revealTickerOptions()">
{{ticker.ticker}}
</div>
<div class="add-to-portfolio"
ng-show="tickerOptions"
ng-mouseleave="hideTickerOptions()">
<div ng-show="addOption"
ng-click="addPortfolio(ticker.ticker)">+ Portfolio</div>
<div ng-show="removeOption"
ng-click="removePortfolio(ticker.ticker)">- Portfolio</div>
</div>
</li>
</ul>
다음은 지시문의 제거 기능입니다.
var vs = $scope;
vs.removePortfolio = function(ticker) {
this.tickerOptions = false;
ApiFactory.deleteWatchList(ticker).then(function(data) {
showMessage(ticker+' removed from portfolio!', data.data.status);
this.tickerRemoved = true;
});
};
this.tickerRemoved = true;
범위가 체인에서 더 낮기 때문에 이것이 오류 라고 생각합니까?
예를 들어, this
이 함수에서 사용 하고 있으며 함수가 마크 업 / 범위에서 더 높기 때문에 제대로 작동합니다.
vs.revealTickerOptions = function() {
this.tickerOptions = true;
if (tickerView === 'all') {
this.addOption = true;
this.removeOption = false;
}
else if (tickerView === 'port') {
this.addOption = false;
this.removeOption = true;
}
};
기능을 <li class="ticker-li"
클릭 할 때 1 개 항목 만 제거하려면 어떻게해야 removePortfolio()
합니까?
ng-hide="tickerRemoved"
해야 ng-hide="ticker.tickerRemoved"
tickerRemoved 특정 시세의 속성이기 때문이다.
ng-show="tickerOptions"
... 와 동일 해야 ng-show="ticker.tickerOptions"
합니다.
ng-click="removePortfolio(ticker.ticker)">
해야 ng-click="removePortfolio(ticker)">
당신은 아마 전체 시세 객체를 전달하려는 때문이다.
그 후에 티커 제거 기능을 업데이트해야합니다. 다음과 같이 작동합니다.
vs.removePortfolio = function(tickerObject) {
var ticker = tickerObject.ticker
tickerObject.tickerOptions = false;
ApiFactory.deleteWatchList(ticker).then(function(data) {
showMessage(ticker+' removed from portfolio!', data.data.status);
tickerObject.tickerRemoved = true;
});
};
일반적인 관찰로, this
너무 많이 의지하고있는 것 같습니다 . this
매우 혼란스러운 키워드가 될 수 있으며 (제 생각에는) 그렇게해야 할 합당한 이유가 있고 나중에 코드 유지 관리 중에 혼란을 일으키지 않을 때만 사용해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다