以下の私のリストでは、下部のdivの1つに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>
ディレクティブのremove関数は次のとおりです。
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]
コメントを追加