2015-01-26 52 views
1

我已經在這裏閱讀了一些關於這個主題的帖子,但所有的答案和所有的小提琴我看到沒有一個正常工作。我讓我的plunkr從動態生成的字段中綁定單向綁定,通過指令隔離範圍內的ng-model綁定到父級表單。但是,不會將表單綁定回指令。我的初始值被忽略了,我在父範圍內所做的更改也是如此,我真的很喜歡解決方案。這是一個代碼片段。AngularJS:ng-model在綁定指令時沒有綁定兩種方式

 <div ng-repeat="field in fields"> 
      <app-field field="field" ng-model="selected[field.name]" form="form"></app-field> 
     </div> 

...  
      .directive("appField", function($http, $compile) { 
       return { 
        restrict: "AE", 
        scope: { 
         field: "=", 
         ngModel: "=", 
         form: "=" 
        }, 
        link: function($scope, element, attrs) { 
         $http.get("field.html").then(function (result) { 
          element.html(result.data); 
          $compile(element.contents())($scope); 
         }); 
        } 
       } 
      }) 

這裏是我的小提琴:http://plnkr.co/edit/ZzC4jS9M9Ev5i6gxUVxB?p=preview

任何幫助,將不勝感激。

+1

指令申報對象的屬性是'scope',不'$ scope'(更不用提,你有兩個有) – 2015-01-26 22:41:38

+0

是啊,該死的plunkrs,複製並粘貼錯誤。這就是當你推動所有按鈕,並拉動所有槓桿,希望有一些堅持的東西時,你會得到;)但TX ...仍然沒有工作,但... – 2015-01-26 22:52:06

+0

似乎是爲我工作:http://plnkr.co/編輯/ VaB0KvaESQAmolrlY1ui?p =預覽 – 2015-01-26 23:01:27

回答

1

該物業是scope,而不是$scope。然後,刪除scope:false,你就完成了!

此外,您還可以使用templateUrl屬性,而不是link(在這種情況下):

.directive("appField", function($http, $compile) { 
     return { 
      restrict: "AE", 
      scope: { 
       field: "=", 
       ngModel: "=", 
       form: "=" 
      }, 
      templateUrl: 'field.html' 
     } 
}) 
+0

你可以在這裏看到它的行動:http://plnkr.co/edit/DmmL4c2HqlXI1WN8EqEy?p=preview – floribon 2015-01-26 23:30:52