2016-06-18 3 views
5

여기에서 angularJS를 처음 사용합니다. 기본적으로, 나는 라우팅 서비스를 사용했다. 그래서 나는 HTML 코드가있는 템플릿에서 라우팅을 호출한다. 템플릿의 코드 (슬라이드 쇼 및 다른 많은 것들)를 표시하는 데 필요한 이러한 모든 일반 자바 스크립트 함수도 있습니다.ng-view (angularjs) 내부의 코드에 일반 javascript를 사용하는 방법

내가이 모든 null 오류를 얻었을 때 (내 JS 기능은 여러 요소를 찾을 수 없다.보기/템플릿의 액세스 코드가 없거나로드되기 전에 실행 되었기 때문에) .

내가 그 템플릿에 할당 한 컨트롤러에 모든 자바 스크립트 함수를 붙여 넣으면 작동했습니다. 그러나 나는 그것을하기로되어 있지 않은 느낌을 가지고 있습니다. 이 작업을 수행하는 올바른 방법은 무엇입니까? 감사. 당신이 다른 경로에있을 때 그것들이 실행되어야하는 요소를 찾을 수 없기 때문에

var app = angular.module("myApp", ["ngRoute"]); 
app.config(function($routeProvider){ 
    $routeProvider 
    .when("/",{ 
     templateUrl:"about.html", 
     controller:"aboutCtrl" 
    }) 
    .when("/aboutus", { 
     templateUrl:"entertainment.html" 
    }) 
}); 

app.controller('aboutCtrl', function($scope){ 
    //placed regular javascript/jquery code here to make it work 
}); 

답변

3

귀하의 jQuery 기능은 아마 작동하지 않습니다.

  • 깨끗한 방법 :

    방법은 문제를 해결하는 방법은 HTML 템플릿과 필요한 코드를 정의하는 각도 지시로 슬라이드 쇼를 감 쌉니다. 이 코드는 템플릿이 호출 된 경우에만 실행됩니다. Angular로 시작한 이래로이 문제에 대한 도움이 필요할 것입니다.

  • 코드를 템플릿에 넣으십시오. < 스크립트> </script> 블록을 통해 필요한 JS를 템플릿에 넣으십시오. 이렇게하면 코드는 템플릿로드시에만 평가됩니다.
  • 앞에서 설명한 것처럼 컨트롤러에 코드를 넣을 수도 있습니다. 하지만 컨트롤러가 부 풀리면 코드가 지저분해질 것입니다.

옵션 2 & 3 옵션이 작동하지만 빠르게 응용 프로그램이 큰 혼란으로 바뀔 것입니다. 코드를 깨끗하게 유지하려면 각도 지시문을 더 파고들 것을 권합니다.

this tutorial은 좋은 출발점이 될 수 있습니다.

+0

감사합니다. 나는 더 많은 것을 연구하고 가장 훌륭한 것으로 보이는 첫 번째 해결책을 시도 할 것입니다. – goldensausage

+0

저는 모든 자바 스크립트 코드를 별도의 지시문에 넣을 수있었습니다 (templateUrl을 사용하여 JS 코드 만 포함 된 html 파일을 연결). 그러나 또 다른 문제가 발생했습니다. offsetHeight는 텍스트가있는 특정 div의 높이를보고합니다 (다시 새로 고침 한 후 올바르게 표시됩니다). 이 문제는 이전에 실행하기 전에 모든 것을로드하고 렌더링 할 수있게 해주는 $ (window) .bind ("load", function()을 사용하여 해결되었습니다.)하지만이 함수는 템플릿 내부에서 사용될 때도 전혀 실행되지 않습니다. – goldensausage

관련 문제