導航:首頁 > 編程語言 > angularjs模糊搜索

angularjs模糊搜索

發布時間:2021-12-02 22:03:59

㈠ 如何用angularjs實現搜索框功能,求demo

用到搜索功能的代碼,則只需要通過如下代碼實現:
$scope.$emit('Search.Config',{
show:true, key:'',delay:800,
emptyText:"請輸入:內容以進行搜索.",
onSearch: function(){
return function(v){
$scope.merData.query(v); //調用數據查詢.
}
}
});

㈡ 如何用angularjs編寫搜索框

可以寫個指令

<!DOCTYPE html>
<html ng-app="myApp">
<head>
<title>angularjs-focus</title>
</head>
<body>
<input type="text" set-Focus="">
<script type="text/javascript" src="js/angular.min.js"></script>
<script type="text/javascript">
var myApp = angular.mole('myApp',[]);
myApp.directive('setFocus', function(){
return function(scope, element){
element[0].focus();
};
});
</script>
</body>
</html>

㈢ angularjs哪個版本用的多

建議用angular2,因為angular1已經抄比較舊了。

㈣ angularjs中與或非怎麼寫

瀏覽$location的實例代碼我們不難發現,每次的url中都會帶一個#,這是因為angularjs默認使用的是標簽模式,它和html5模式有什麼區別?
(1)標簽模式
標簽模式使用的是內部鏈接的技巧,URL後面緊跟一個#,angularjs本身不會重寫標簽,也不需要伺服器端的支持,鏈接後的URL樣子基本是這樣的:

(2)HTML5模式
標簽模式的url看起來總是覺得不爽,html5模式可能比較適合咱們的請求格式(比如說REST),

在angularjs內部,可以通過$locationProvider.Html5Mode()(內部用的是html5 history api,如果瀏覽器不支持將自動降級到標簽模式)方法來實現這樣的路由要求,在該模式下,angularjs會重寫標簽。使用該模式時,永遠都不要使用相對路徑,如果你的應用是在根路徑中載入的,這不會有什麼問題,但如果是在其他路徑中,AngularJS應用就無法正確處理路由了.
為了在應用程序各處使用相對鏈接,你將需要在你文檔的裡面設置一個.

註:html5 history api
history.pushState(data, title [, url]):往歷史記錄堆棧頂部添加一條記錄;data會在onpopstate事件觸發時作為參數傳遞過去;title為頁面標題,當前所有瀏覽器都會忽略此參數;url為頁面地址,可選,預設為當前頁地址。
history.replaceState(data, title [, url]) :更改當前的歷史記錄,參數同上。
history.state:用於存儲以上方法的data數據,不同瀏覽器的讀寫許可權不一樣。
瀏覽器支持情況(完整的可以通過www.caniuse.com查詢)
IE 10+, FF38+,chrome 31+,safari 7.1+, opera 30+
為什麼要用history api?
無法使用瀏覽器的前進、後退來切換前後數據。
當我們將瀏覽器地址欄中的鏈接與朋友分享時,可能實際上卻並非我們期望的內容。
單純地使用AJAX不利於搜索引擎優化。

㈤ AngularJS是不是對SEO不友好

你好,是的,因為目前蜘蛛對js解析還有一定的難度,所以對於一些沒用比較加上js的事件,能用就不用吧!這樣對搜索引擎更加友好的!希望採納!

㈥ 如何運行angularjs應用

如何利用AngularJS服務接入外部API
除了輕松對HTML進行擴展的能力之外,AngularJS還提供一套簡便途徑、幫助我們與外部API實現交互。在今天的教程中,我們將共同探討如何利用其服務與GitHub的API相對接,進而創建一套簡單的庫瀏覽器。
第一步:准備工作
我們就以下面這套基礎HTML模板為起點:
<!DOCTYPE html> <html> <head> <title>GitHub Search</title> </head> <body> </body> </html>

現在將AngularJS腳本添加到該文檔的<head>當中:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>

在此之後,我們可以在將這套CCS樣式添加到行內或者獨立的文件當中:

* { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; font-family: sans-serif; } body, html { margin: 0; } p { margin: 0; } input { width: 100%; } pre { white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word; } div.repo { border-bottom: 1px solid; cursor: pointer; } #search, #repo, #user { float: left; } #search { width: 20%; } #repo { width: 60%; } #user { width: 20%; }

如大家所見,其中不存在任何多餘的內容、只保留最基礎的布局方案——將搜索欄置於右側、庫信息位於中央、用戶庫同樣置於右側。我們還需要將對應代碼行打包至<pre>標簽當中,此後我們還要利用它顯示README文件內容——因為這些內容通常來自GitHub Flavored Markdown、而且其中一部分代碼行與用戶庫列表存在重疊。
當然,大家可以向其中添加更多樣式以提升成果的視覺效果——但請注意,本教程中的截圖都採取最基本的外觀設計。
大家可以未來需要編寫的JavaScript代碼置於本文檔的<head>當中或者為其建立獨立文件,但獨立文件仍然需要處於AngularJS腳本之下。
第二步:模塊
現在我們可以為自己的應用程序創建一個模塊:
var app = angular.mole('githubsearch', []);

接下來利用ngApp指令將其添加到<body>標簽當中:
<body ng-app="githubsearch">

第三步:控制器
我們還需要為自己的應用程序准備一套控制器。為了簡化創建流程,我們將只為應用准備一套控制器,這樣我們就不必考慮如何在不同控制器之間進行信息傳遞了:

app.controller('SearchController', function SearchController($scope) { });

第四步:基礎服務
我們需要對自己的GitHub服務進行定義:

app.factory('GitHub', function GitHub($http) { return { }; });

我們將使用app.factory()方法,這樣就能保證返回對象附帶幾個以後將會用到的方法。我們將使用$http服務從GitHub的API中獲取數據。
第五步:搜索庫
我們服務中的第一項方法負責利用GitHub API對庫進行搜索。使用服務非常簡單(這項函數能夠進入由製造函數返回的對象):

searchRepos: function searchRepos(query, callback) { $http.get('https://api.github.com/search/repositories', { params: { q: query } }) .success(function (data) { callback(null, data); }) .error(function (e) { callback(e); }); }

$http.get()方法是執行GET請求的一種捷徑。第一條參數是我們希望訪問的URL。第二條參數則代表一個具備選項的對象。這里我們只需要params對象——它是一個查詢參數散列,將被添加到該請求當中(其中q參數屬於搜索字元串,大家可以點擊此處了解更多相關信息)。
$http.get()會返回一項承諾。我們可以將監聽器附加在success()與error()上,並且據此調用回調函數。
第六步:搜索欄
為了使用我們在之前幾步中定義完成的函數,我們需要在自己的HTML當中添加搜索欄。相關代碼非常簡單,如下所示:

<div id="search"> <input ng-model="query" placeholder="search" ng-keyup="$event.keyCode == 13 && executeSearch()"> <div class="repo" ng-repeat="repo in repos" ng-click="openRepo(repo.full_name)"> <strong>{{ repo.full_name }}</strong> <p>{{ repo.description }}</p> </div> </div>

我們使用ngModel指令將該輸入欄中的值指向至Scope query變數,並在用戶按下回車鍵後利用ngKeyup調用executeSearch()函數(這樣$event.keyCode == 13就會進行比較)。我們無法在AngularJS表達式中使用條件語句,但一條簡單的邏輯運算符(AND)足以很好地完成這項任務。
在輸入域下面,我們使用ngRepeat來顯示搜索結果。我們將顯示該庫的完整名稱與描述(如果需要顯示其它不同內容,大家可以點擊此處查看GitHub API說明文檔中的可用域)。
我們還使用ngClick通過該庫的完整名稱來調用openRepo()函數,這樣我們就能顯示與之相關的信息。我們稍後再對該函數進行定義。
第七步:使用搜索功能

現在我們終於可以使用自己創建完成的服務了。首先,將GitHub參數添加至控制器函數(這樣該服務就能被注入到AngularJS當中):
app.controller('SearchController', function SearchController($scope) {

現在定義executeSearch()函數:

$scope.executeSearch = function executeSearch() { GitHub.searchRepos($scope.query, function (error, data) { if (!error) { $scope.repos = data.items; } }); }

如大家所見,我們利用來自$scope.query的搜索字元串從當中調用GitHub.searchRepos(),而後在回調中將搜索結果(來自data.items)加入$scope.repos變數。

只要執行以上步驟,我們就能順利顯示出搜索結果。在瀏覽器中打開我們的HTML文件並嘗試進行搜索:

第八步:獲取庫中的數據

現在我們已經獲得了搜索功能,可以顯示出庫中用戶所選定的信息內容。下面我們再創建一條函數,旨在通過自己的服務獲取來自庫的數據:

getRepo: function getRepo(name, callback) { $http.get('https://api.github.com/repos/'+ name) .success(function (data) { callback(null, data); }) .error(function (e) { callback(e); }); }

被傳遞至此函數的名稱必須為完整名稱(結構為:作者名稱、斜杠、庫名稱——例如angular/angular.js),這是因為我們需要將其傳遞至GitHub
API(點擊此處查看更多說明)。

第九步:獲取庫中的README文件

README文件中的內容並未被包含在我們利用以上函數獲取到的數據當中。相反,大家需要利用另一個API進行調用及獲取,因此我們需要創建以下函數:
getReadme: function getReadme(name, callback) { $http.get('https://api.github.com/repos/'+ name +'/readme') .success(function (data) { callback(null, atob(data.content)); }) .error(function (e) { callback(e); }); }

這條函數與之前我們創建完畢的兩條基本相同,只不過對URL進行了變更。我們還要利用atob()函數解碼README文件的內容,因為它採用base64編碼機制。大家可以點擊此處查看GitHub
API說明文檔中與獲取README文件內容相關的信息。

我們之所以沒有將這兩條請求塞進同一個函數當中,是因為某些庫根本不具備 README文件。如果我們將二者強行結合,應用程序可能因此發生故障。

第十步:顯示庫信息

我們將在另一個元素<div>當中顯示庫的完整名稱、查看過該庫的人數以及README文件:

<div id="repo" ng-show="activeRepo"> <strong>{{ activeRepo.full_name }}</strong> <em>Watched by {{ activeRepo.watchers_count }} people.</em> <pre>{{ activeRepo.readme }}</pre> </div>

我們將把該信息保存在控制器Scope內的activeRepo變數當中。只要存在可以顯示的數據,ngShow就會將該元素顯示出來(如果不存在可以顯示的數據,我們將只能看到『Watched
by people』文本,而且沒有任何庫被選中)。

第十一步:更新控制器

我們還需要對控制器進行更新,從而保證其切實獲取到庫數據並將其納入Scope當中。下面創建我們之前附加至ngClick指令的openRepo()函數:

$scope.openRepo = function openRepo(name) { GitHub.getRepo(name, function (error, data) { if (!error) { $scope.activeRepo = data; GitHub.getReadme(name, function (error, data) { if (!error) { $scope.activeRepo.readme = data; } else { $scope.activeRepo.readme = 'No README found!'; } }); } }); }

如大家所見,我們首先使用GitHub.getRepo()方法、檢查錯誤而後將該數據引入activeRepo變數。接下來,我們獲取README文件——如果該文件不存在,我們需要向用戶提示該情況。

現在大家可以再次運行自己的應用程序並查看其實際效果:

第十二步:獲取用戶的庫

為了將更多功能引入到我們的應用程序當中,我們將為屏幕右方已被選定庫的持有者顯示其所有可用庫。這要求我們向服務中引入另一個方法:

getUserRepos: function getUser(name, callback) { $http.get('https://api.github.com/users/'+ name +'/repos') .success(function (data) { callback(null, data); }) .error(function (e) { callback(e); }); }

其內容與此前的幾條幾乎無甚差別(大家可以點擊此處查看更多與此API請求相關的信息)。

第十三步:顯示用戶的庫

這基本上相當於重現HTML中的搜索欄機制,不過我們實際需要顯示的是用戶名稱與user對象中的庫,而非輸入域或者Scope本身:

<div id="user"> <strong>{{ user.login }}</strong> <div class="repo" ng-repeat="repo in user.repos" ng-click="openRepo(repo.full_name)"> <strong>{{ repo.name }}</strong> <p>{{ repo.description }}</p> </div> </div>

到了這一步,大家應該已經擁有了一套能夠切實運作的AngularJS應用程序——它可以根據搜索字元串獲取GitHub庫。大家可以進一步對其進行迭代,例如向其中添加更多功能或者為其設計完全不同的外觀樣式。
轉載,僅供參考,祝你愉快,滿意請採納。

㈦ AngularJs怎麼清空輸入過濾結果

那你肯定不能把過濾寫在html里
因為過濾器是不變的 而AngularJS是雙向綁定 你要這樣的話 過濾就只能寫在JS里,這樣才能更改

閱讀全文

與angularjs模糊搜索相關的資料

熱點內容
海綿寶寶劇場版有幾部 瀏覽:821
電影前度2 瀏覽:121
免費高清看電視的網站 瀏覽:906
html5開發工具有那些 瀏覽:27
(中文字幕)NSFS-411 露 瀏覽:165
蒙氏學五子棋視頻教程 瀏覽:293
你想看的電影網 瀏覽:350
編程貓作品播放出現問題怎麼辦 瀏覽:617
法國啄木鳥在哪裡可以看 瀏覽:146
最狂野的夢想電影英語觀後感120字 瀏覽:452
征途文件里哪個是背包文件 瀏覽:545
補習女老師電影韓國 瀏覽:495
食物鏈女主角叫什麼 瀏覽:746
樓上偷窺的電影叫啥 瀏覽:234
大數據理事會 瀏覽:161
eclipsejava可執行 瀏覽:102
誰給個直接看的在線網站 瀏覽:985
法國電影羅曼史瑪麗為什麼殺保羅 瀏覽:741
什麼是大數據推手 瀏覽:333
宋昆明結局 瀏覽:820

友情鏈接