【发布时间】:2017-11-20 22:01:04
【问题描述】:
所以我是kAngularJS(1.6.4) 的新手。 我有一个组件,我想使用控制器以编程方式隐藏/显示。不幸的是,我不明白如何抓住我的组件,然后将 ng-hide 设置为 false。
现在,我的控制器在服务调用中看起来像这样。当数据返回时,我想运行我的隐藏/显示逻辑:
<div id="container" class="flex-container"><!-- flex container -->
<div class="box" id="redbox" class="flex-item"><!-- flex item -->
<input id="searchTermInput" class="search-input">
</div>
<div class="box" id="greenbox" class="flex-item"><!-- flex item -->
<button id="searchButton" class="search-button" (click)="runSearch($event)">
Search
</button>
</div>
<hr width="100%" class="divider-line" ng-hide="dividerHider">
<div class="flex-item search-results">
<ul class="heroes">
<li *ngFor="let result of searchResults">
<span class="badge">{{result.id}}</span> {{result.title}}
</li>
</ul>
</div>
</div>
.
import { Component } from '@angular/core';
import {SearchService} from "./search.service";
import {SearchResult} from "./search-result";
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
providers: [SearchService]
})
export class AppComponent {
title = 'app';
searchResults: SearchResult[];
constructor(private searchResultService: SearchService) { }
runSearch(ev): void {
var q = 100;
this.searchResultService.getHeroesSlowly().then(searchResults => {
this.searchResults = searchResults;
alert("Hello! I am an alert box!!" + this.searchResults.length);
//Call hide component here
}
)
}
}
我已经完成了关于以编程方式隐藏内容的研究,但他们的代码似乎根本没有使用控制器。例如,在此回复中
这里
AngularJS - ng-hide with different ng-controller
我完全不知道关于“$scope”的代码应该去哪里。
非常感谢任何帮助。
编辑:解决方案
我最终使用了这个结构。
...
<hr width="100%" id="divider" class="divider-line" *ngIf="showDivider">
...
export class AppComponent {
showDivider = false;
runSearch(ev): void {
this.searchResultService.getHeroesSlowly().then(searchResults => {
this.showDivider = true;
}
)
}
}
【问题讨论】:
-
您的代码和模板使用 Angular 2+ 语法。
ng-hide指令是 AngularJS (Angular 1.X)。 Scope 和ng-hide不是 Angular 2+ 的一部分。 -
代码导入
@angular/core。那是 Angular 2+ 而不是 AngularJS 1.6.4。 -
正如问题所言,这根本不是重复的,因为它询问如何“以编程方式从控制器中隐藏”。链接的问题没有回答。
标签: javascript angular controller