AngularJS объект во view

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Gil707
Сообщения: 20
Зарегистрирован: 2017.08.01, 13:15

AngularJS объект во view

Сообщение Gil707 »

Господа, необходим кроппер/сегментор ихображений, нашел его на гитхабе
Используется Angular (с ним особо не имел опыта работы)
Локально все работает, запускается, как только вставляю в Yii view и рендерю его через контроллер во-первых не скрываются кнопки, которые должны отображаться только когда изображение загружено, во вторых не происходит реакция на клик (ng-click)
Все ассеты подключил как обычно

Код: Выделить всё

...
    $ this-> registerJsFile ('/ moderator / js / segment / vision / compatible.js', ['position' => yii \ web \ View :: POS_END]);
    $ this-> registerJsFile ('/ moderator / js / segment / vision / dat.gui.min.js', ['position' => yii \ web \ View :: POS_END]);
    $ this-> registerJsFile ('/ moderator / js / segment / hopscotch / js / hopscotch.js', ['position' => yii \ web \ View :: POS_END]);
    $ this-> registerJsFile ('https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js', ['position' => yii \ web \ View :: POS_END]) ;
...
Может где-то не там подключен ангуляр, хотя ошибок никаких нет в консоли.
Если сохраняю теги вида <script>... то ругается на отсутствие функций.
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: AngularJS объект во view

Сообщение urichalex »

Ангуляр 1.2.5 в 2к18? Rly?
Пробелы между слэшами - это ошибка копипаста или вы так на самом деле пишете?
В консоли ошибки есть?
Элемент с ng-click находится в области видимости контроллера?
Обработчик ng-click существует в контроллере?
Gil707
Сообщения: 20
Зарегистрирован: 2017.08.01, 13:15

Re: AngularJS объект во view

Сообщение Gil707 »

Да, ну собственно, идея была не поломать ничего, код написан давно, таких библиотек бесплатных больше нет.
Пробелы ошибка (со стака копировал, хз почему так подставил)
Во вьюшке примерно такая структура (взял только 1 кнопку чтобы много кода не копипастить)

Код: Выделить всё

<div class="wrapper" ng-controller="CanvasControls">
            <div class="row large-margin">
                <div class="col-xs-1 m-t" object-buttons-enabled="getSelected()" id="side_options">
                    <div class="outer">
                             <form id="image-form" onsubmit="return false;">
                                <input type='file' id='imgfile' style="display:none"/>
                                <a type='button' class="btn btn-app btn-default" id='btnLoad' ng-click='load_image();'><i class="fa fa-image"></i>Add image</a>
                             </form>
           </div>
</div>....
в app_config

Код: Выделить всё

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

cveditor.config(function($interpolateProvider) {
  $interpolateProvider
    .startSymbol('{[')
    .endSymbol(']}');
});

cveditor.directive('bindValueTo', function() {
  return {
    restrict: 'A',

    link: function ($scope, $element, $attrs) {

      var prop = capitalize($attrs.bindValueTo),
          getter = 'get' + prop,
          setter = 'set' + prop;

      $element.on('change keyup select', function() {
        $scope[setter] && $scope[setter](this.value);
      });

      $scope.$watch($scope[getter], function(newVal) {
        if ($element[0].type === 'radio') {
          var radioGroup = document.getElementsByName($element[0].name);
          for (var i = 0, len = radioGroup.length; i < len; i++) {
            radioGroup[i].checked = radioGroup[i].value === newVal;
          }
        }
        else {
          $element.val(newVal);
        }
      });
    }
  };
});

cveditor.directive('objectButtonsEnabled', function() {
  return {
    restrict: 'A',

    link: function ($scope, $element, $attrs) {
      $scope.$watch($attrs.objectButtonsEnabled, function(newVal) {
        console.log('123');

        $($element).find('.btn-object-action')
          .prop('disabled', !newVal);
      });
    }
  };
});
controller.js в гите без изменений, да собственно все файлы без изменений. Интересно почему не работает именно в Yii, подозреваю что проблема в загрузке/порядке загрузки но не могу выявить где
Gil707
Сообщения: 20
Зарегистрирован: 2017.08.01, 13:15

Re: AngularJS объект во view

Сообщение Gil707 »

В консоли все пусто вообще
Как бы впринципе как вариант решения вырезать его вообще, просто изначально лезть в него не хотелось, поняв, что все работает, а с Yii что-то не заводится..
Если консолить события на клик на кнопку, в плане

Код: Выделить всё

$scope.load_image = function(){
    console.log('load image'); ...
То в консоли ничего нет, т.е. события клик он не перехватывает вообще я так подразумеваю
Gil707
Сообщения: 20
Зарегистрирован: 2017.08.01, 13:15

Re: AngularJS объект во view

Сообщение Gil707 »

Изображение
Даже хинты всплывают, проблема только с ангуляровских scope
На оригинале большая часть кнопок появляется только после загрузки изображения, тут сразу все
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: AngularJS объект во view

Сообщение urichalex »

А контроллер вообще подключен? В первом посте я не вижу контроллера
Gil707
Сообщения: 20
Зарегистрирован: 2017.08.01, 13:15

Re: AngularJS объект во view

Сообщение Gil707 »

urichalex писал(а): 2018.06.05, 14:21 А контроллер вообще подключен? В первом посте я не вижу контроллера
Да, само собой, там просто не стал все копировать но "controller.js" присутствует
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: AngularJS объект во view

Сообщение futbolim »

urichalex писал(а): 2018.06.05, 12:28 2к18
Сократил так сократил ; )
Ответить