AngularJS:ng-model在指令内部没有绑定两种方式

时间:2015-01-26 22:39:33

标签: angularjs angularjs-directive angularjs-scope

我已经在这里阅读了一些关于这个主题的帖子,但我看到的所有答案和所有小提琴都没有正常工作。我让我的plunkr从动态生成的字段绑定单向,通过指令隔离范围内的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 个答案:

答案 0 :(得分:1)

该属性为scope,而非$scope。然后,删除scope:false,您就完成了!

此外,您可以使用templateUrl属性而不是link(在这种情况下):

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