2014-03-31 78 views
0

目標:運行2個指令在連續第二指令將被第一指令輸出angularjs - 指令 - 確定上一個指令之後運行的指令通過檢查屬性

問題來確定:這樣做動態。

我想打一個核心指令,它會得到:

<div field-directive="textbox" field-model="SomeModel"/> 

核心指令我想使用的模板返回類似的東西:

<div > 
         <div> 
          <div > 
           {{fieldModel.Title}}: 
          </div> 
          <div> 
           <div ng-model="fieldModel.Value" textbox /> 
          </div> 
         </div> 
        </div> 

的問題,我可以」不知道如何在模板中寫入field-directive這個值爲textbox的值,我需要它,因爲我想要另一個指令在這個輸出上運行。 我的指令:

myapp.directive('fieldDirective', function() 

    { 
     replace : true, 
     scope : { 
      fieldModel: "=", 
      fieldDirective: "=" 
     }, 
     link: function (scope, element, attr) { 
      element.html(element.html().replace("field-directive", attr.fieldDirective)); 
     } 
     template: 
     '<div ng-show="fieldModel.IsRelevant">\ 
         <div>\ 
          <div class="fieldTitle">\ 
           {{fieldModel.Title}}:\ 
          </div>\ 
          <div>\ 
           <div ng-model="fieldModel.Value" fieldDirective />\ 
          </div>\ 
         </div>\ 
        </div>'; 
    } 

回答

0

只是爲的情況下別人都會遇到類似的問題: 我的溶液滴在鏈接功能寫這個數據,然後使用編譯這樣的功能:

myapp.directive('fieldDirective',['$compile', function(compile) 

{ 
    return{ 
    replace : true, 
    scope : { 
     fieldModel: "=", 
     fieldDirective: "=" 
    }, 
    link: function (scope, element, attr) { 

      var strTemplate =('<div ng-show="fieldModel.IsRelevant"><div><div class="fieldTitle">{{fieldModel.Title}}:</div><div><div ng-model="fieldModel.Value" placeHolder /></div></div></div>').replace("placeHolder", attr.fieldDirective); 
      var e = angular.element(strTemplate); 
     compile(e.contents())(scope); 
     element.replaceWith(e); 


    }, 
      } 
}] 
);