javascript
  • angularjs
  • angularjs-directive
  • angularjs-scope
  • 2017-02-06 5 views -1 likes 
    -1
    Directive: 
    <div ng-show="{{ show }}"> 
         ... 
    </div> 
    
    angular.module('mymodule').directive('mydirective', [ 
        function() { 
        return { 
         scope: { 
          show: '=' 
         }, 
         ... 
        }; 
    }]); 
    
    Parent: 
    <div mydirective show="show" ng-repeat="item in items"> 
    </div> 
    
    controller.js: 
    this.show = false //intially 
    
    function changeVisibility(){ 
        this.show = true; //how to tell the directive about this change? 
    } 
    

    «показать» - это переменная области видимости, которая изначально ошибочна, но позже превращается в истину. Тем не менее, переменная сферы действия «show» не обновляется, когда это происходит. Как обновить отображаемую переменную директивы при изменении переменной show родительской? Нужен ли мне $ scope? $ Watch или еще что-то?Как обновить директиву при изменении переменной области родителя?

    +0

    податливость '$ объем. $ Применить()' выстрел! http://jimhoskins.com/2012/12/17/angularjs-and-apply.html – spoonscen

    +2

    @spoonscen '$ scope. $ apply()' не является * "вылечить все" * и не должен использоваться, если только область изменена вне углового контекста, что явно не имеет места здесь – charlietfl

    ответ

    0

    ng-show ожидает выражение не интерполяции

    Попробуйте

    ng-show="show" 
    
    +0

    Эта часть фактически работает. У меня есть контроллер. Именно поэтому я использую controller.show. Обновит вопрос. – Prabhu

    +0

    Затем укажите [mcve] – charlietfl

    +0

    . Я обновил вопрос. – Prabhu

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