Angular不能让ng-model在嵌套指令

时间:2017-05-23 16:08:33

标签: javascript angularjs angularjs-directive model

我对Angular很新,我已经能够在我的项目中走得很远,但我遇到了一个小障碍。

我想解析一些字段数据,然后将ng-model应用到它,这样我就可以在字段中使用一些条件逻辑。 我确实有这个工作:

摆弄HTML逻辑: https://jsfiddle.net/sup3rmassvie/ws8r4zm5/

它使字段,更新输入变量和条件逻辑工作! (**将第一个字段设置为' 1'然后在选择中选择' First Choice'

问题是看起来非常混乱并且不容易移植到新文件,所以我想要做的就是在指令中写它。

指点指示: https://jsfiddle.net/sup3rmassvie/bzkypvoo/

但是,我无法让模型(范围??)正常工作。我自己尝试过很多东西,但我似乎无法在这里完成我需要做的事情,以便在{{1}中对新创建的输入进行ng-model指令工作。

*注意:我知道在第二笔中所有输入都是文本输入,我想先通过这部分

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

想出来!

工作小提琴(仍然只显示文本元素):https://jsfiddle.net/sup3rmassvie/h7uxtr4q/

所以在我的控制器中我必须使用

来引用范围
$scope.scopeReference = $scope;

然后我将其传递给<gf-form-fields fields="form.fields" model="scopeReference"></gf-form-fields>

然后在每个指令中,我使用scope属性将其作为“model”

传递
.directive('gfFormFields', function ()
{
    return {
        restrict: 'E',
        replace: true,
        scope:
        {
            fields: '=',
            model: '='
        },
        template: "<ul><gf-field ng-repeat='field in fields' field='field' model='model'></gf-field></ul>",
    };
})

然后在最后一个指令中,我只是告诉它“你的范围现在是这个范围”

        ...
        template: "<li class='gf-input'></li>",
        link: function (scope, element)
        {
            var field = scope.field;
            scope = scope.model;
            scope.field = field;

            ...add attributes...

            element.append($compile(fieldInput)(scope));
        }

希望这有助于某人!