Eu tenho este módulo de rotas:
var mainModule = angular.module('lpConnect', []).
config(['$routeProvider', function ($routeProvider) {
$routeProvider.
when('/home', {template:'views/home.html', controller:HomeCtrl}).
when('/admin', {template:'views/admin.html', controller:AdminCtrl}).
otherwise({redirectTo:'/connect'});
}]);
HTML inicial:
<div ng-include src="views.partial1"></div>
partial1
HTML:
<form ng-submit="addLine()">
<input type="text" ng-model="lineText" size="30" placeholder="Type your message here">
</form>
HomeCtrl
:
function HomeCtrl($scope, $location, $window, $http, Common) {
...
$scope.views = {
partial1:"views/partial1.html"
};
$scope.addLine = function () {
$scope.chat.addLine($scope.lineText);
$scope.lines.push({text:$scope.lineText});
$scope.lineText = "";
};
...
}
Na addLine
função $scope.lineText
é undefined
, isso pode ser resolvido através da adição ng-controller="HomeCtrl"
de partial1.html
, no entanto, faz com que o controlador a ser chamado duas vezes. O que estou perdendo aqui?
fonte
$parent.$parent...
-lo para fazê-lo funcionar. Em outras palavras, usar$parent
faz suposições sobre a estrutura DOM.Em vez de usar
this
como a resposta aceita sugere, use em seu$parent
lugar. Então no seupartial1.html
você terá:Se você quiser saber mais sobre o escopo
ng-include
ou outras diretivas, verifique isso: https://github.com/angular/angular.js/wiki/Understanding-Scopes#ng-includefonte
$scope.$parent
vez de,$parent
é indefinido, de acordo com Angular.$scope.$parent
que funciona para mim em angular 1.3.20Eu descobri como solucionar esse problema sem misturar dados pai e sub escopo. Defina um
ng-if
nong-include
elemento e defina-o como uma variável de escopo. Por exemplo :No seu controlador, quando você definir todos os dados necessários no seu sub escopo, defina show como
true
. Ong-include
copiará, neste momento, o conjunto de dados em seu alcance e fixando-o em seu sub escopo.A regra geral é reduzir os dados do escopo mais profundamente do escopo, caso contrário, você terá essa situação.
Máx.
fonte