2016-06-16 2 views
3

와 나는 각도가 프런트 엔드 뷰를 제공과 함께 레일 응용 프로그램을 짓고 있어요. 현재 Angular가 중첩 된 Angular Views에 머리글과 바닥 글을 모두로드하는 문제가 있습니다.각도로드 머리글과 바닥 글을 두 번 레일

예를 들어, 나는 최신 견적 요청을 나열하는 페이지가 있습니다. 이 뷰에서 나는 머리글 뒤에 다른 머리글 (원하지 않는), 따옴표 목록, 그 다음 다른 꼬리말 (원하는 것도 아닌)이 차례로옵니다. 나는 사용자로 로그인하고있어 일단 내가이 무슨 일이 일어나고 있는지 정말 모르겠어요

이 발생, 아마 어떤 사람은 도움이 될 수.

Application.Html

<!DOCTYPE html> 
<html> 
<head> 
    <title>StrangeCessation</title> 
    <%= stylesheet_link_tag 'application', media: 'all' %> 
    <%= javascript_include_tag 'application'%> 
    <%= csrf_meta_tags %> 
    <meta name="viewport" content="width=device-width, intial-scale=1, maximum-scale=1"> 
</head> 
<body ng-app="StrangeCessation"> 
    <div class="section1"> 
     <div class="heading"> 
      <%= image_tag "HEADER.jpg", class: "himg" %> 
     </div> 
    </div> 
    <div class="container-fluid" ui-view="main"> 
     <%= yield %> 
     <hr> 
    </div> 

    <div class="footer "> 
     <% if !logged_in? %> 
      <script> 
       $(document).ready(function() { 
        document.getElementById("lgfields").style.visibility = "hidden"; 
       }); 
       function switchFields() { 
        if(document.getElementById("lgfields").style.visibility == "hidden") { 
         document.getElementById("lgfields").style.visibility = "visible" 
        } else { 
         document.getElementById("lgfields").style.visibility = "hidden" 
        }; 
       } 
      </script> 
      <div> 
       <span class="col-xs-offset-5 col-sm-offset-10">Strange Cessation</span> 
        <span class="loginI"> 
         <a onclick="switchFields()"><%= image_tag "login.png", class: "loginIcon loginImage" %></a> 
        </span> 
       <div id="login" class="col-sm-offset-10"> 
        <div id="lgfields"> 
         <%= render partial: "sessions/new" %> 
        </div> 
       </div> 
      </div> 
     <% else %> 
      <span>Strange Cessation</span> 
       <div class="navigation"> 
        <a ui-sref="home">Home</a> 
        <a ui-sref="quotes">Quotes</a> 
        <a ui-sref="users">Users</a> 
        <%= link_to "Log out", logout_path, method: "delete" %> 
       </div> 
     <% end %> 
    </div> 
</body> 
</html> 

quotes.html 다른

<% if logged_in? %> 
<div class="quotespage" > 
    <div class="userleftpanel col-xs-2 col-sm-3 col-sm-offset-1"> 
    <div class="row"> 
     <h1> Welcome <%= current_user.username %> </h1> 
    </div> 
    <div class="row"> 
     <%= image_tag current_user.avatar %> 
    </div> 
    <div class="row"> 
     <script> 
     $(document).ready(function() { 
      document.getElementById('settings').style.visibility = 'hidden'; 
      document.getElementById('fullquote').style.visibility = 'hidden'; 
     }); 

     function switchSettings() { 
      if(document.getElementById('settings').style.visibility == 'hidden') { 
      document.getElementById('settings').style.visibility = "visible" 
      } else { 
      document.getElementById('settings').style.visibility = 'hidden' 
      }; 
     } 
     </script> 
     <a onclick="switchSettings()"> Settings </a> 
     <div id="settings"> 
      <%= render :partial => "users/form", :locals => { :user => @user } %> 
     </div> 
    </div> 

    </div> 

    <div class="quoteicons col-xs-8"> 
    <div class="openquotes col-xs-2"> 
    <h2><%= @quotes.count %> Open Jobs</h2> 
    </div> 
    <div class="newquotes col-xs-2 col-xs-offset-1"> 
     <h2> 
     <% @myarray = [] %> 
     <% @quotes.each do |quote| %> 
     <% if quote.unread?(current_user) == true %> 
      <% @myarray.push(quote) %> 
     <% end %> 
     <% end %>  
     <%= @myarray.count %> New Request 
     </h2> 
    </div> 
    <div class="deletedquotes col-xs-2 col-offset-1"> 
     <h2> Deleted Quotes </h2> 
    </div> 
    </div> 




     <div id='quotes' class="quotes col-xs-5 col-md-5" > 
     <div id="full" ui-view="fullquote"></div> 
     <div ng-repeat="quote in quotes" class="request"> 
      <a ng-click="showQuote(quote);"> 
       <span ng-if="quote.read == false"> *NEW*</span> 
       <span class="col-xs-12">Request #{{quote.id}}</span><br> 
       <span class="col-xs-1">{{quote.name}}</span> 
       <span class="col-xs-1">{{quote.email}}</span> 
       <span class="col-xs-4 col-xs-offset-4">{{quote.city}}, {{quote.state}}, {{quote.region}} </span> 
      </a> 
      <div ng-show="quote.visible"> 
       <div><a ui-sref="quotes.detail({id: quote.id})" ng-click="showfullquote()" ng-init="fullquote = false">View</a> 
       <a ng-click="deleteQuote(quote)" style="float:left;"> Delete </a> 
       <div> 
       </div> 
      </div> 
      </div> 
     </div> 
     </div> 
    </div> 
    </div> 

<% end %> 

Quotes.js

var app = angular.module("StrangeCessation", ['ui.router', 'ngResource']); 

app.factory('Quotes', ['$resource',function($resource){ 
return $resource('/quotes.json', {},{ 
query: { method: 'GET', isArray: true }, 
create: { method: 'POST' } 
}) 
}]); 

app.factory('Quote', ['$resource', function($resource){ 
return $resource('/quotes/:id.json', {}, { 
show: { method: 'GET' }, 
update: { method: 'PUT', params: {id: '@id'} }, 
delete: { method: 'DELETE', params: {id: '@id'} } 
}); 
}]); 

app.factory('Users', ['$resource',function($resource){ 
return $resource('/users.json', {},{ 
query: { method: 'GET', isArray: true }, 
create: { method: 'POST' } 
}) 
}]); 

app.factory('User', ['$resource', function($resource){ 
return $resource('/users/:id.json', {}, { 
show: { method: 'GET' }, 
update: { method: 'PUT', params: {id: '@id'} }, 
delete: { method: 'DELETE', params: {id: '@id'} } 
}); 
}]); 

app.config(function($stateProvider, $urlRouterProvider, $locationProvider) { 
    $stateProvider 
    .state('home', { url: '/home', views: { 'main': { templateUrl: 'static_pages/home.html'}}}) 
    .state('quotes', { url: '/quotes', views: {'main': { templateUrl: 'quotes.html', controller: 'QuotesCtrl'}}}) 
    .state('quotes.detail', { url: '/:id', views: {'fullquote': { templateUrl: function($stateParams) {return `quotes/${$stateParams.id}`;}, controller: 'QuotesController'}}}) 
    .state('quotes.detail.pdf', { url: '.pdf', views: { 'quotepdf': { controller: 'QuotesCtrl'}}}) 
    .state('users', { url: '/users', templateUrl: 'users.html', controller: 'UsersCtrl'}) 
    .state('/users/:id', { url: 'users_show.html', controller: 'UsersCtrl' }); 

    // $urlRouterProvider.otherwise(function($injector, $location) { 
    //  var $state = $injector.get("$state"); 
    //   $state.go("home"); 
    // }) 

    $locationProvider.html5Mode({ enabled: true, requireBase: false }); 

}); 

app.controller("QuotesCtrl", ['$scope', '$state', '$stateParams', 'Quotes', 'Quote', '$location', function($scope, $stateParams, $state, Quotes, Quote, $location) { 
    $scope.quotes = Quotes.query(); 
    $scope.quote = Quote.query(); 
    $scope.$stateParams = $stateParams; 
    $scope.$state = $state; 
    var quotes = $scope.quotes; 
    var quote = $scope.quote; 


    $scope.logState = function() { 
     console.log($state); 
    } 

    var logState = $scope.logState ; 
    var fullquote = true; 
    $scope.fullquote = fullquote; 

    $scope.showQuote = function (quote) { 
     quote.visible = !quote.visible; 
     logState(); 
    } 

    $scope.deleteQuote = function (quote) { 
     Quote.delete({id: quote.id}) 
     console.log("deleted" + quote.id); 
    } 

    if($state == 'quotes.detail.pdf') { 
     console.log('Fire Modal'); 
     $scope.firePdfModal = function() { 
      console.log('Fire Modal'); 
     } 
    } 

    $scope.showfullquote = function() { 
     fullquote = false; 
     console.log(fullquote); 
    } 

}]); 

app.controller("QuotesController", ['Quote', '$scope', '$stateParams', QuotesController]); 
function QuotesController($scope, $stateParams, Quote) { 
    $scope.currentQuoteId = $stateParams.quote.id; 
}; 

app.controller("UsersCtrl", ['$scope', '$http', 'Users', 'User', '$location', function($scope, $http, Users, User, $location) { 
     $scope.users = Users.query(); 
    } 
]); 

+0

이 질문에 어떤 진전? – Danieboy

답변

1

저는 ng-app="StrangeCessation"<div class="header> 뒤에있는 div로 이동하고 <div class="footer"> after ng-app의 닫는 태그도 넣으려고합니다.

여기 각도의 주요 사용은 무엇입니까? 머리글/바닥 글이 중복되면 Angular가 해당 요소가 포함 된 중첩 된 뷰를 렌더링한다는 의미입니다. 모든 견해, 부분, 관제사 등을 보지 않고 우리는 추측 할 수 있지만 추측 할 수 있습니다. application.html.erb에서 머리글/바닥 글을 제거하고 로그인시 머리글/바닥 글이 계속 렌더링되는지 확인할 수 있습니다. 또한이 라인은 문제가 될 수 있지만 확실하지 않을 것 같습니다 static_pages/home.html

에 될 일을 확인한다. 여기의 뷰 타겟이 "메인"인 것처럼 보입니다. 그 맞습니까?

.state('quotes', { url: '/quotes', views: {'main': { templateUrl: 'quotes.html', controller: 'QuotesCtrl'}}}) 

또한, 귀하의 $urlRouterProvider에서 통과 그러나 그 후 그 함수 정의 주석 왜 확실하지 않다. 또한 부분을 보지 않고도 그들이 펑키 한 일을하고 있는지 알기가 어렵습니다. 아마도 어딘가에 전체 코드에 대한 링크를 게시 할 수 있습니까?

또한, 주제와하지만, document.getElementById('settings').style.visibility = 'hidden';

처럼 사용하는 것을 당신은 당신이 할 수있는 jQuery를 사용하는 경우 만 할 이유는 확실하지 : $('#settings').hide();

1

내가 제안 당신은 솔루션의 모두를 시도하고 있는지 둘 중 하나가 작동합니다. 코드를 더 많이 보지 않고도 해결책이 될 수 있습니다.

<!DOCTYPE html> 
<html> 
<head> 
    <title>StrangeCessation</title> 
    <%= stylesheet_link_tag 'application', media: 'all' %> 
    <%= javascript_include_tag 'application'%> 
    <%= csrf_meta_tags %> 
    <meta name="viewport" content="width=device-width, intial-scale=1, maximum-scale=1"> 
</head> 

<div class="section1"> 
    <div class="heading"> 
     <%= image_tag "HEADER.jpg", class: "himg" %> 
    </div> 
</div> 

<body ng-app="StrangeCessation">  
    <div class="container-fluid" ui-view="main"> 
     <%= yield %> 
     <hr> 
    </div> 
</body> 

<div class="footer "> 
     <% if !logged_in? %> 
      <script> 
       $(document).ready(function() { 
        document.getElementById("lgfields").style.visibility = "hidden"; 
       }); 
       function switchFields() { 
        if(document.getElementById("lgfields").style.visibility == "hidden") { 
         document.getElementById("lgfields").style.visibility = "visible" 
        } else { 
         document.getElementById("lgfields").style.visibility = "hidden" 
        }; 
       } 
      </script> 
      <div> 
       <span class="col-xs-offset-5 col-sm-offset-10">Strange Cessation</span> 
        <span class="loginI"> 
         <a onclick="switchFields()"><%= image_tag "login.png", class: "loginIcon loginImage" %></a> 
        </span> 
       <div id="login" class="col-sm-offset-10"> 
        <div id="lgfields"> 
         <%= render partial: "sessions/new" %> 
        </div> 
       </div> 
      </div> 
     <% else %> 
      <span>Strange Cessation</span> 
       <div class="navigation"> 
        <a ui-sref="home">Home</a> 
        <a ui-sref="quotes">Quotes</a> 
        <a ui-sref="users">Users</a> 
        <%= link_to "Log out", logout_path, method: "delete" %> 
       </div> 
     <% end %> 
    </div> 
</html> 

또는

<!DOCTYPE html> 
<html> 
<head> 
    <title>StrangeCessation</title> 
    <%= stylesheet_link_tag 'application', media: 'all' %> 
    <%= javascript_include_tag 'application'%> 
    <%= csrf_meta_tags %> 
    <meta name="viewport" content="width=device-width, intial-scale=1, maximum-scale=1"> 
</head> 

<body ng-app="StrangeCessation">  
    <div class="container-fluid" ui-view="main"> 
     <%= yield %> 
     <hr> 
    </div> 
</body> 
</html> 
관련 문제