私は3つのhtmlページを持っています。 index.html、search-movie.html、およびresult-movie htmlを参照してください。私は別のコントローラからコントローラの機能を呼び出す方法は?
ui-routerでページをリダイレクトしています。
私はhtmlページ内のテキストとボタンがあります。
検索movie.htmlコードは以下の通りです。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>Search Movie</title>
</head>
<body>
<div class="bs-component" ng-controller="searchMovieController">
<form class="well form-search">
<fieldset>
<legend>Search Movie</legend>
</fieldset>
<div>
<label class="control-label" for="movie-name">Movie Name : </label>
<input type="text" id="movie-name" class="input-small" style="margin-left: 10px;" placeholder="Please write movie name" ng-model="searchMovie">
<a ui-sref="/result-movie" class="btn-sm btn-primary" style="margin-left: 10px;" ng-click="searchMovieF()">
<span class="glyphicon glyphicon-search"> Search</span>
</a>
</div>
</form>
<ul>
<li> <h2>Title: {{name}}</h2></li>
<li><h3>Release Date: {{release}}</h3></li>
<li><h3>Length: {{length}}</h3></li>
<li><h3>Description: {{description}}</h3></li>
<li><h3>IMDb Rating: {{rating}}</h3></li>
</ul>
</div>
</body>
</html>
、これは次のように私の結果-movie.htmlコードです:
(function (angular) {
'use strict';
var app = angular.module('adphorusWork', ['ui.router']);
app.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('/', {
url: '/',
templateUrl: 'welcome.html'
})
.state('/search-movie', {
url: '/search-movie',
templateUrl: 'search-movie.html',
controller: 'searchMovieController'
})
.state('/result-movie', {
url: '/result-movie',
templateUrl: 'result-movie.html',
controller: 'resultMovieController'
});
$urlRouterProvider.otherwise('/search-movie');
});
// I have no idea hoe can I use ? (with function)
//app.factory('omdbService', function() {
// return {
// omdbData: {
// }
// };
//});
app.controller('searchMovieController', function ($scope, $http) {
$scope.searchMovieF = function() {
if ($scope.searchMovie.length > 0) {
$scope.api = 'http://www.omdbapi.com/?t=' + $scope.searchMovie + '&y=&plot=short&r=json';
$http.get($scope.api)
.success(function (data) {
$("#movie-name").autocomplete({
source: data.Title
});
if ((data.Error != "Movie not found!") && (data.Error != "Must provide more than one character.")) {
$scope.name = data.Title;
$scope.release = data.Released;
$scope.length = data.Runtime;
$scope.description = data.Plot;
$scope.rating = data.imdbRating;
}
else {
alert("Movie not found !")
}
});
} else {
alert("Please write somethings !")
}
}
});
app.controller('resultMovieController', function ($scope) {
});
})(angular);
私はこれをしたい:次のように私app.jsを追加
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Result Movie</title>
</head>
<body>
<div id="forResult" class="bs-component" ng-controller="resultMovieController">
<form class="well form-search" id="formResult">
<fieldset>
<legend>Result for Search Movie</legend>
</fieldset>
</form>
<ul>
<li> <h2>Title: {{name}}</h2></li>
<li><h3>Release Date: {{release}}</h3></li>
<li><h3>Length: {{length}}</h3></li>
<li><h3>Description:{{description}}</h3></li>
<li><h3>IMDb Rating: {{rating}}</h3></li>
</ul>
<a ui-sref="/search-movie" class="btn-sm btn-primary" style="margin-left:20px;">
<span class="glyphicon glyphicon-circle-arrow-left">Back to Search Page</span>
</a>
</div>
</body>
</html>
ときテキスト(例: 'ゲーム')に値を書き込み、
ボタン(search-movie.html内)をクリックすると、結果が表示されます(例:imdb 、タイトルなど)を
result-movie.htmlに変更します。私はui-routerを使用していましたが、result-movie.htmlに値を表示できませんでした。私は検索ページに値を表示することができますが、私はこれを望んでいません。
1は別のを呼び出すか、どのように私は.factory使用( 'servicethingss ..')することができCANコントローラ
何もショー内で使用しますページ? @Arif – eagle
@eagle、あなたのresulthtmlページも '{{name}}'の代わりに変更してください。 あなたの問題を示すjsfiddleを教えてください。 – Arif
私は、 JSFiddleを追加しました。どうすれば動作するか確認してください。 – Arif