2015-05-20 5 views
-3

У меня есть директива, которая отображает маленький синий ящик в таблице, когда моя стоимость fee.pay имеет значение true. Таблица, в которой я работаю, также является директивой, но я думаю, что мы хорошо справились с каждой директивой, соответствующей области и синхронизируя значения между ними, хотя не стесняйтесь указывать наименьшее число, «это может вызвать что-то», вопрос.Директива не впрыскивать html

вот часть директивы table, с которой я работаю, поскольку для этого я должен быть достаточно из этого файла, но мне нужно показать весь файл, который не представляет проблемы. table.html

<tr><div ng-if="$index > 0"> 
        <div ng-if="defaultFee.Paid"> 
         Paid 
        </div> 
        <div ng-if="!defaultFee.Paid"> 
         <input type="button" class="button button-light-blue button-xSmall-text button-w130" 
              ng-value="defaultFee.pay === undefined ? 'Calculate and Pay' : 'Cancel'" 
              ng-click="calculateAndPay($index, defaultFee)" /> 
         <input type="button" ng-click="stupidShit(defaultFee)" value="woooh" /> 
        </div> 
       </div> 
      </td> 
     </tr> 

     <tr calculate-and-pay fee="defaultFee" project="project" ng-show="defaultFee.pay" index="$index" /></tr> 

Js для этого файла есть. grid.directive.js

 restrict: 'E', 
     scope: { 
      ngModel : '=', 
      fees : '=' 
     }, 
      // calculate and pay handled in controller to utilize 
      // the $state param to navigate to the calculation page 
      function calculateAndPay(index, fee) { 
       // if the passed fee is the initial major fee 
       // go to the initial fee calculation page 
       if ($.inArray(fee, $scope.locals.defaults) > -1 && index === 0) { 
        $state.go('^.^.fee.initial'); 
       } 
       else { 
        // display the calculate and pay 
        // input and pdf link 
        if (fee.pay === undefined) { 
         fee.pay = true; 
        } 
        // hide the calculate and pay 
        // input and pdf link 
        else { 
         validator.clearValidation(); 
         delete fee.pay; 
        } 
       } 
      } 
     templateUrl: '/ng-src/components/projects/edit/fee-payment/fee-payment-grid.template.html' 

html для директивы, которая не отображается. pay.template.html

Js для этой директивы есть. pay.directive.js

 restrict: 'A', 
     replace: true, 
     scope: { 
      fee  : '=', 
      project : '=', 
      index : '=', 
     }, 
     controller: ['$scope', '$element', function($scope) { 
      $scope.locals = { 
       projectTypes : PROJECT_TYPES, 
       feeTypes  : FEE_TYPES, 
       payment  : {} 
      } 

     link: { 
      post: function postLink(scope, elem, attrs) { 
       // scope functions 
       scope.payFee = payFee; 

       ////////////////////////////////////////////////////////// 
       //saw in other questions similar to mine 
       //it gets hit when the ng-show value is changed but the 
       //the function show() doesn't do anything 
       //if (attrs.hasOwnProperty("ngShow")) { 
       // scope.$watch("ngShow", function (value) { 
       //  if (value) { 
       //   elem.show(); 
       //   elem.removeClass('ng-hide'); 
       //  } 
       //  else { 
       //   elem.hide(); 
       //  } 
       // }); 
       //} 

      templateUrl: '/ng-src/components/projects/edit/fee-payment/calculate-and-pay.template.html' 

Чтобы быстро пройти. В таблице есть кнопка «Calculate and Pay», вы можете увидеть текст для этого в ng-value в table.html. Когда это щелкнуть, функция calculateAndPay() вызывается в grid.directive.js. Первое условие, если ($ .inArray (fee, $ scope.locals.defaults)> -1 & & index === 0), не пострадает, это другой тестовый пример. Но то, что я пытаюсь исправить, также затронет эту область, если она не исправлена. один раз в else, первое условие изменяет бит на true, это значение, которое ng-show просматривает (fee.pay = true). Как только значение было изменено, я могу нажать на функцию link.post() в файле pay.directive.js, и я могу видеть, когда значения меняются каждый раз. Мне было странно, что я не мог просмотреть мой innerHTML или elem.html(), который заставляет меня думать, что я делаю что-то неправильно с шаблоном, но я не знаю, что.

Любая помощь или совет приветствуются, и если мне нужно что-то объяснить, пожалуйста, дайте мне знать.
Благодарим за помощь!

+2

ли это вообще возможно для вас, чтобы уменьшить этот пример? Можете ли вы создать иллюстративный пример проблемы, чтобы нам не нужно было понимать много бизнес-логики? Удалите все ветви кода, которые не связаны с проблемой. Если вы хотите помочь (и ожидаете получить его), по крайней мере, попытайтесь изолировать проблему как можно больше? Прямо сейчас, мне нужно использовать Ctrl + F только для того, чтобы найти, какую функцию вы имеете в виду. –

+0

Я знал, что слишком много поставил. Мой план состоял в том, чтобы работать на сжатом примере, когда у меня было больше времени. Я буду конденсировать то, что происходит выше, я не хотел добавлять слишком мало, но, к сожалению, я добавил слишком много ха-ха, я, вероятно, не смогу вернуться к этому до 6, хотя, но я буду конденсировать то, что у меня есть с некоторым объяснением чтобы помочь руководство – user2592413

+0

Вы ставите * waaaay * слишком много. И, честно говоря, если у вас нет времени инвестировать в свой собственный вопрос, то почему вы ожидаете, что мы будем вкладывать время в помощь? –

ответ

0

templateUrl был в неправильном месте, у меня было внутри пост() изначально, теперь

link: { 
     post: function postLink(scope, elem, attrs) { 
      // scope functions 
      scope.payFee = payFee; 
     }, 
     templateUrl: '/ng-src/components/projects/edit/fee-payment/calculate-and-pay.template.html' 
} 
Смежные вопросы