Просмотр не обновляется после события щелчка из всплывающего окна

#angularjs

#angularjs

Вопрос:

Смущает, почему значение текстового поля не меняется на «bbb» после нажатия кнопки во всплывающем окне.

jsfiddle прикреплен.

Пользовательский интерфейс:

 <div ng-controller="MyCtrl">
    <input type="text" ng-model="test_value"/>
    <button ng-click="clickToOpen()">My Modal</button>

    <script type="text/ng-template" id="templateId">

        <div id="target" ng-click="test1()" ng-controller="MyCtrl">
          <input type="button" ng-click="test()" value="Set Data" />
        </div>
    </script>
 

Контроллер:

 var myApp = angular.module('myApp',['ngDialog']);

function MyCtrl($scope, ngDialog) {
    $scope.test_value = 'aaa';
    $scope.clickToOpen = function () {
     $scope.dialog = ngDialog.open({ template: 'templateId' , scope : $scope});
    };

    $scope.test1 = function()
    {
    $scope.test_value = 'bbb';
    console.log($scope.test_value);
    $scope.dialog.close();
    };
}
 

http://jsfiddle.net/mb6o4yd1/590/

Комментарии:

1.Потому что кнопка ngClick указана test как функция для вызова при нажатии кнопки, а не test1 . div ngClick Не будет вызываться, потому что событие щелчка не будет распространяться от кнопки до div, если вы не напишете пользовательский обработчик событий.

2. мой плохой. пожалуйста, смотрите Новую скрипку .. я пометил правильные события, но все еще нет luck..jsfiddle.net/mb6o4yd1/594

3. ответ обновлен новой скрипкой.

4. пожалуйста, подскажите, почему это не работает… jsfiddle.net/vuvxphv3/2

5. если я удалю ng-controller =»MyCtrl», он работает, но с ng-controller =»MyCtrl» он не работает… просто любопытно..

Ответ №1:

Измените эту строку

         <div id="target" ng-click="test1()" ng-controller="MyCtrl">
          <input type="button" ng-click="test()" value="Set Data" />
        </div>
 

Для

         <div id="target">
          <input type="button" ng-click="test1()" value="Set Data" />
        </div>
 

http://jsfiddle.net/vuvxphv3/1/