2016-09-21 5 views
0

내 탐색은 각도 상태를 사용합니다. 메뉴의 항목을 클릭 할 때마다 머리 부분의 그림을 변경하는 기능이 실행되므로 각 페이지 머리글에 다른 그림이 표시됩니다. 이것은 누군가가 사이트의 홈페이지에서 시작하고 클릭을 통해서만 탐색 할 때 제대로 작동하지만 URL을 입력하면 기능이 실행되지 않습니다. onEnter()를 사용하여 클릭을 놓을 수 있고 두 상황에서 모두 작동 할 수 있지만 범위 문제가있는 것 같아 일부 지침을 실제로 사용할 수 있습니다.상태 "onEnter"기능을 사용하여 컨트롤러 내부 기능을 트리거

app.directive("mainNav", function() { 
    return { 
     restrict: "E", 
     templateUrl: "js/main-nav.html", 
     controller: function() { 
     this.tab = tabbytab; 

     this.isSet = function(checkTab) { 
      return this.tab === checkTab; 
     }; 

     this.setTab = function(activeTab) { 
      tabbytab = activeTab; 
      window.fbAsyncInit(); 
     }; 
     this.imageArray = navImages; 
     //minus 1 because tabbytab starts at 1 and the array doesnt of course 
     this.currentImage = navImages[(tabbytab - 1)].image; 
     console.log(tabbytab); 
     this.setImage = function(activeTab) { 
      this.currentImage = this.imageArray[tabbytab].image; 
     }; 
    }, 
    controllerAs: "tab" 
}; 
}); 

그리고 여기가

.state('home', { 
     url: "/home", 
     templateUrl: "js/home.html", 
     onEnter: function() { 
      tab.setTab(1); 
      console.log("on enter function triggered"); 
     } 
    }) 

답변

0

당신이 문제를 범위 지정 무엇을 의미하는 더 작은 설명 할 수 내 상태입니까? 정확히 무슨 일이 일어나고있는가?

조금 덜 복잡한 다른 방법은 $ routeParams https://docs.angularjs.org/api/ngRoute/service/을 사용하는 것입니다. 기본적으로 경로 (url)에서 매개 변수를 가져 와서 URL에 따라 이미지를 표시 할 수 있습니다.

+0

물론 확인해 주셔서 감사합니다. 내가 입력에서 사용하여 내 설정된 탭 함수를 트리거 할 수 있지만, 그것은 탭이 내 $ stateProvider에서 정의되지 않는다고 나는 그것이 잘못된 경로였던 것 같아요. 경로 방법이 현재 어떤 경로에 따라 페이지 콘텐츠를 변경하는 훨씬 더 좋은 방법 인 것처럼 보입니다. 감사! – natedaswas

관련 문제