AngularJS ссылается на родительский контроллер

Я пытаюсь реализовать следующее поведение. Я включаю шаблон, используя ng-inculde, где я делаю что-то вроде этого: {{something}}

Я хочу, чтобы это 'что-то' имело двойную привязку к другой переменной в области действия родительского контроллера и имело возможность устанавливать имя свойства области действия родительского контроллера. Таким образом, в одном включении что-то будет ссылаться на яблоко, а в другом — на апельсин.

Что я делаю, так это то, что я написал собственный контроллер, который имеет метод lookAt(v), и я вызываю этот метод в ng-init div, где я использую ng-include и ng-controller. В этом методе я пытаюсь установить привязку, но это не работает. Я предполагаю, что в родительской области уже определена эта переменная.

Вот мой код:

mod.controller('FooController', ['$scope', function($scope) {
    $scope.lookAt = function (variable) {
        $scope.something=$scope[variable];
    }
}]);

Спасибо за любое предложение о том, как решить эту проблему.


person Martin Palis    schedule 19.04.2013    source источник
comment
Можете ли вы предоставить jsfiddle? Если я правильно вас понял, вы хотите реализовать шаблон Observer. В AngularJS для этого можно использовать $watch.   -  person tschiela    schedule 19.04.2013


Ответы (2)


В вашем шаблоне, который подключается с помощью ng-include, вместо {{something}} используйте something(), где метод something определен на родительском контроллере.

Вы все еще можете инициализировать имя своей переменной, если хотите:

mod.controller('FooController', ['$scope', function($scope) {
    $scope.initMethod = function(variable) {
       $scope.variable = variable;
    }
    $scope.something = function () {
        return $scope[$scope.variable];
    }
}]);
person Mark Rajcok    schedule 19.04.2013

При использовании контроллера как синтаксиса вы не можете просто сделать $scope.$parent в потребителе (конструктор для дочернего элемента), вам нужно обратиться к родительскому объекту данных следующим образом: $scope.$parent.vmParent.

person wojjas    schedule 19.02.2015