UI 라우터에서 '컨트롤러'를 사용하는 것이 예상대로 작동하지 않습니다.
추상 상태와 컨트롤러를 구문으로 사용하는 페이지에 대해 다음과 같은 상태 설정이 있습니다.
# Details page route
.state 'title',
url: '/title',
abstract: true,
template: '<ui-view/>',
.state 'title.show',
url: '/:titleId',
templateUrl: 'title/show.html'
controller: 'Title as t'
이 데모를 위해 'Title' 컨트롤러의 't' 인스턴스에 변수를 할당하고 Title 컨트롤러 기능 내부에서 이 작업을 수행합니다.
angular.module('title').controller 'Title',
['$state', ($state) ->
this.name = 'Test'
그리고 내 보기 'title/show.html' 안에서 방금 만든 변수를 페이지에 출력하려고 시도합니다.
{{t.name}}
아무것도 안 보이네요.그러나 UI 라우터의 컨트롤러를 제거하고 'title/show.html' 페이지를 감싸는 요소 위에 다음과 같이 표시합니다.
<div ng-controller="Title as t">
그러면 모든 것이 잘 됩니다.전에 이 문제를 발견한 사람이 있습니까?나는 다른 앱에서 잘 작동하기 때문에 이 앱에서 무엇이 다를 수 있는지, 아마도 js 라이브러리 버전의 차이를 알아내려고 여전히 노력하고 있습니다.
상태 구성에서:
대신에controller: 'Title as t'
, 시도:
controller: 'Title',
controllerAs: 't'
편집 : 방금 최소한의 앱을 구현했습니다.ui-router
그리고 구문.controller: Title as t
의 버전 0.2.0에서도 작동합니다.ui-router
오늘 현재 가장 최근의 것으로.저는 알 수 있어요.t
예를 들어 각도 범위를 검사할 때.
컨트롤러가 다음 값을 반환해야 합니다.this
컨트롤러 As 기능이 제대로 작동하도록 합니다.CoffeeScript는 암시적으로 마지막 줄을 반환하므로 다음과 같이 써야 합니다.
return this
또는 vm 구문을 사용하고 있고 다음을 작성한 경우:
vm = this
컨트롤러 맨 끝에 다음과 같이 쓸 수 있습니다.
return vm
이것이 템플릿 뷰를 사용하면서도 뷰 요소 외부에 컨트롤러를 지정하는 데서 문제가 발생한 사람에게 도움이 되는 경우.이것을 알아내는 데는 오랜 시간이 걸렸습니다.이 스레드 https://github.com/driftyco/ionic/issues/3058 에 크레딧을 제공합니다.
** 틀렸습니다 **
views: {'content@': { templateUrl: 'views/listing.html' }},
controller: 'ListingCtrl',
controllerAs: 'ctrl'
** 오른쪽 **
views: {
'content@': { templateUrl: 'views/listing.html' },
controller: 'ListingCtrl',
controllerAs: 'ctrl'
}
이런 답변들이 상당 부분 효과가 있는 것 같습니다.저는 다른 문제를 안고 여기에 왔습니다.
나의UI Router
자바스크립트 파일, 나의controllers
다음과 같이 정의됩니다.
state('groupHome', {
url: '/groupHome',
templateUrl: 'app/modules/group-home/groupHome.html',
controller: 'GroupHomeController',
controllerAs: 'groupHomeController'
그리고 이름을 가진 컨트롤러에 접근하려고 하면 템플릿 파일에groupHomeController
액세스할 수 없습니다.
하지만 다른 한편으로는 코드를 이렇게 바꿨을 때:
state('groupHome', {
url: '/groupHome',
templateUrl: 'app/modules/group-home/groupHome.html',
controller: 'GroupHomeController as groupHomeController'
완벽하게 잘 작동합니다.
당신은 해야 할 것입니다.return this;
당신의 최후에controller function
를 위해controllerAs
일의 구문
angular.module('title').controller 'Title',
['$state', ($state) ->
this.name = 'Test'
return this
함께 일하시는 분들은 다음과 같이 하셔야 합니다.return $scope
대신.
angular.module('title').controller 'Title',
['$state','$scope', ($state, $scope) ->
$scope.name = 'Test'
return $scope
행운을 빌어요.
언급URL : https://stackoverflow.com/questions/28953289/using-controller-as-with-the-ui-router-isnt-working-as-expected
'programing' 카테고리의 다른 글
Angular에서 페이지 로드 후 앵커링하려면 스크롤 (0) | 2023.10.11 |
---|---|
PowerShell 시도/잡기 및 재시도 (0) | 2023.10.11 |
파워셸을 사용하여 포트 열기 (0) | 2023.10.11 |
파이썬을 사용하여 엑셀 파일에서 한 열을 읽는 방법? (0) | 2023.10.11 |
MySQL 및 SQL Server에서 쿼리를 통해 테이블 DDL 생성 (0) | 2023.10.11 |