2015-02-19 3 views
1

Мне нужно получить доступ (вызов и/или изменить) область действия контроллера извне.
После this answer мне удалось открыть сферу, но привязки данных не загнуться ...Функция управления вызовом извне

Возьмите это в качестве примера (JSFiddle).

angular.module("App", []).controller("Test", function($scope) 
{ 
    $scope.list = ["added on initialization"]; 

    $scope.add = function(item) 
    { 
     $scope.list.push(item); 
    }; 
}); 

var addFromOutside = function() 
{ 
    angular 
     .element(document.getElementById("TestController")) 
     .scope() 
     .add('added from outside'); 
}; 
<div ng-app="App" ng-controller="Test" id="TestController"> 
    <ul> 
     <li ng-repeat="item in list track by $index"> 
      {{item}} 
     </li> 
    </ul> 

    <button ng-click="add('added from inside')">Add from inside</button> 
</div> 

<button onclick="addFromOutside()">Add from outside</button> 

Если вы нажмете на «Добавить внутри» кнопки он работает, как ожидалось.
Но если вы нажмете на «Добавить снаружи» кнопки ничего не происходит, пока вы не нажмете на «Добавить внутри» кнопка ...

Есть в любом случае сделать это и есть привязка данных работу ?

+0

почему вы хотите, чтобы вызвать его из за пределами? Я имею в виду, что вы можете использовать 'ng-controller' несколько раз, если вам нужно –

+0

@JohnyStark, правда? Я попробую. Спасибо ... – NemoStein

+0

да, просто оберните эту кнопку с помощью '

' –

ответ

2

вы забыли добавить

scope.$apply() 

http://jsfiddle.net/o2b0bdbr/ вы вне углов главных переваривать цикл, так что вы должны дать ему понять, что что-то случится на его прицелы

+0

Простой и эффективный ... Спасибо. – NemoStein

+0

не забудьте принять ответ;) –

+0

Я должен подождать пару минут, чтобы принять его, но я буду ... =] – NemoStein

Смежные вопросы