javascript
  • angularjs
  • json
  • angularjs-scope
  • 2015-11-30 68 views 0 likes 
    0

    我正在尋找有關如何從JSON獲取HTML並在點擊時觸發模式/切換的最佳做法方向。如何強制從JSON傳遞到角度範圍的表達式?

    JSON有100個條目,其中約10條包含會觸發彈出窗口的鏈接。它們在文本中顯示爲「Schedule#」(其中#是A-G)。

    我的第一個方法是簡單地寫角加價到JSON,並把它渲染成範圍:

    從JSON在:

    "Are the details defined in 
    <a href='/#/' class='schedule' 
        data-ng-click='modal.active = modal.active === true ? false : true'> 
         Schedule G 
    </a>?" 
    

    很明顯 - 這是不工作因爲角度不知道ng-click或模態。 $ sce正在爲trustAsHTML工作 - 但是,我找不到任何東西可以識別表達式。

    我在正確的道路上嗎?

    我一直在戳穿$ apply,$ compile和$ parse文檔 - 但似乎沒有一個像我在做什麼。

    另外,是否更好的正則表達式的'Schedule',然後在其中以編程方式構建角度表達式?我在如何處理這項任務時就空了。

    +1

    如果您要在JSON中使用角度語法,$ compile是正確的路徑,但這是一個難以理解的解決方案。您應該只是將JSON解析爲ng-repeat的一部分,並根據需要將這些元素放入您的html中。請參閱http://stackoverflow.com/questions/16485274/using-ng-repeat-on-json-containing-json –

    +0

    你能在這裏提供你的代碼嗎? – roshini

    +0

    @JamesGentes謝謝你。我爲整個模型使用了ng-repeat,但是,這個子對象有一個鏈接中期句子,它需要讀取現有的$ scope。你能解釋爲什麼這是一個醜陋的解決方案 - 除了FEELS醜嗎?它做什麼。我如何使用ng-repeat這種方式? – vars

    回答

    0

    HTML

    <p data-ng-bind-html="__services.trustAsHTML(__data.steps[step.text])" data-angular-compile></p> 
    

    編譯指示

    angular.module('app.directives.AngularCompile', [], ["$compileProvider", function($compileProvider) { 
    $compileProvider.directive('angularCompile', ["$compile", function($compile) { 
        return function(scope, element, attrs) { 
         scope.$watch(
          function(scope) { 
           return scope.$eval(attrs.angularCompile); 
          }, 
          function(value) { 
           element.html(value); 
           $compile(element.contents())(scope); 
          } 
         ); 
        }; 
    }]) 
    }]); 
    

    的JSON對象具有ng-click屬性的HTML鏈接,採用ng-bind-html,用的trustAsHtml$sce使HTML安全。在json加載到$q的承諾中後,我還使用了一個自定義的angular-compile指令將角度點擊監聽器編譯到應用程序中。

    0

    雖然我還沒有完全解決這個問題,但我知道關於方向問題的答案是堅實的$編譯。我發現它是this great blog post,它受到了帖子中引用的類似StackOverflow問題的啓發。

    相關問題