CI 묻고 답하기

제목 자바스크립트 두번호출이 됩니다.
글쓴이 짱구 작성시각 2013/05/31 15:47:58
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 20038   RSS
날코딩으로만 열심히 하다가 프레임웍 공부를 하려고 하는 중
최초 구조를 잡아보고자 하여 top,left,content,footer를 나눠놨습니다.

 public function index(){
  $this->load->view('top');
  $this->load->view('left');
  $this->load->view('notice/write');
  $this->load->view('footer');
 }
이런식으로 뿌리도록 하였는데요.
[top] 페이지에는 공통으로 쓰는 javascript가 있고,
[notice/write ] 이 페이지내부에서 [write] 페이지에서 사용할 javascript를 또 작성하였는데.
페이지 호출이 write 페이지가 연속으로 두번 호출이 되더라구요.

어떤 부분이 잘못 된건지를 몰라서요. 애초에 구조를 저렇게 잡지 말고,
파일 내부에서 include 방식으로 가야하는건지 궁금해서 여쭙습니다.
 다음글 url/변수 질문이요 (3)
 이전글 컴포넌트 작성 질문. (3)

댓글

/ 2013/05/31 15:58:00 / 추천 0
 위 소스만 가지고선 문제가 없어보입니다.

혹시 다른파일에서 write를 include 해오는게 아닌지..

또는 페이지를 분할하시면서 다른곳에 소스가 겹쳐서 작성된게 아닌지 싶네요


그리고 ci구조라면 include를 사용할 일은 거의 없을 것 같네요

해당 파일도 mvc 구조에 맞게 분할 후 ci에서 호출하면 될테니까요

가급적이면 코딩의 일관성을 위해 include는 자제 하심이 좋을 듯 합니다.

(라고 말하지만 저 역시 초보..)

변종원(웅파) / 2013/05/31 16:01:57 / 추천 0
키님 말씀처럼 어디선가 한번 더 호출했을 겁니다. 


짱구 / 2013/05/31 16:07:00 / 추천 0

음.. 이렇게 사용해본건 처음이라서요^^; 일단 저렇게 나눠서 하는게 맞다니 다행이군여..
제 소스의 문제는

 

top.php 부분에서 
$(function(){
 //  다른 스크립트
});

write.php 부분에서
$(function(){
//write 부분 스크립트 
});
이와같이 onload가 두번 존재해서 그런거 같은데요...
top에서도 onload해서 써야할 함수가 있고 write에서도 onload 해서 써야 할 함수가 있는데
이럴땐 어떻게 처리를 해야 할까요.. ㅜㅜ onload가 두개 있어서 호출이 두번 되는거 같더라구요.
변종원(웅파) / 2013/05/31 16:27:34 / 추천 0
그럴때는 top에서만 onload 실행하고 주소에 따라 write 부분을 실행하게 해주면 됩니다.


주소가 a.com/write/post 라면 

<script>
$(function(){

<?php
if ($this->uri->segment(1) == 'write')
{
     //write 스크립트
}
?>
});
</script>

짱구 / 2013/05/31 16:42:49 / 추천 0

키: 감사합니다.( _ _ )
웅파: 감사합니다. ( _ _)
음.. 결국엔 하나의 js 안에 저런식으로 다 나눠놔야 하는군여.. 좀 더러워 지겠군여 ㅠㅠ

/ 2013/05/31 17:46:12 / 추천 0
 짱구 // 

답을 찾으셨다니 다행입니다

다만 보다가 조금 의아한 부분이 있어서 추가 댓글을 조금 답니다.



작성된 코드상에 파일에 네이밍되어있는 것으로 보아서는 top 파일은

공용으로 불러지는 파일이 될것 같은데

이렇게 되면 write파일에서 해당 스크립트는 당연히 같이 사용 가능할테구요

write 파일에 있는 스크립트를 지우면 쉽게 해결이 될 것 같은데요?;;


만약 write 파일이 top 없이 단독 호출되는 경우가 있고 이 경우에도

스크립트가 사용되어져야 한다면 또 다른 방법으로 처리되어야 할 것이구요



별것 아니지만 보다보니 생각나서 조금 더 적었습니다 ^^;

짱구 / 2013/06/01 01:51:09 / 추천 0

키 //

감사합니다.^^

TOP 에선 TOP만 쓰는 스크립트가 있었구요
WRITE 에선 WRITE에서 사용할 스크립트가 있어서요..
TOP은 모든파일에 들어가다보니 TOP의 JS안에 웅파님이 말씀해주신것 처럼 분기를 나눠서 하는
방법이 최선인거 같아요. WRITE만 단독으로 쓴다하면 이런 고민은 안하였죠 ! 감사합니당