Переменная области не передается шаблону, включенному в тег ng-include. Я хочу, чтобы страница generic.html поставлялась с page1.html и page2.html. Я получаю статический контент Привет, приветствую, но, когда я нажимаю метод в контроллере1.js, имя, заключенное в угловую директиву, не печатается. Я попытался назвать в одном объекте, как $ scope.user = {}, и добавил user.name, а затем я не могу связать имя в шаблоне html.
Main.js
$stateProvider
.state('index', {
parent: 'app',
abstract : true,
url: '/index',
views: {
'content@': {
templateUrl: urlpath+'ngtemplates/chat/chat.menu.html',
controller: ['$state',function ($state) {
$state.go('screen.welcome');
}]
}
}
})
.state('screen.welcome', {
url: '',
templateUrl: urlpath+'templates/page1.html',
controller:'Controller1'
})
.state('screen.details', {
url: '',
templateUrl: urlpath+'templates/page2.html',
controller:'Controller2'
})
Controller1.js
$scope.selected = function(){
$scope.name = "Jim";
}
generic.html
<div ng-app="sampleapp">
<h1> Hi, Welcome! </h1>
<p> {{name}} </p>
</div>
Вы также можете использовать синтаксис controllerAs.
.state('screen.details', {
url: '',
templateUrl: urlpath+'templates/page2.html',
controllerAs:'vm'
})
И в Html вы можете получить доступ, например {{vm.name}}.
Если вы используете синтаксис ControllerAs, вам не нужно помещать ng-controller в свой HTML.
Вам нужно добавить контроллер в шаблон
<div ng-app="sampleapp">
<div ng-controller = "Controller1"> //controller added
<h1> Hi, Welcome! </h1>
<p> {{name}} </p>
</div>
</div>