将ng-model设置为与变量相同而不是引用该变量?

时间:2013-12-16 10:46:34

标签: javascript angularjs

我有一种看起来像这样的消解:

.directive('gdInputField', function() {
    return {
        //will only work for elements, not attributes.
        restrict: 'E',
        template: "<label for='{{name}}'>{{label}}</label><input name='{{key}}' id='{{name}}' type='{{type}}' ng-required='{{required}}' /><p>{{entry.1949113882}}</p>",
        scope: {
                label: '@label',
                name: '@name',
                key: "@key",
                required: "@required",
                type: "@type"
        },
    };
})

我希望将使用@key设置的值添加为输入字段的模型名称。如果我设置ng-model='key'。我得到的字符串是@key作为ng-model的内容。

这似乎是结果:

$scope={
     someting: @key
}

我想要的是:

$scope={
   @key: '';
}

如果用户在输入中写入内容,则应更新@key。

此外,模型出价的当前名称是什么,或者我如何找到?

1 个答案:

答案 0 :(得分:0)

重写您的代码如下

app.directive('gdInputField', function () {
    return {
        //will only work for elements, not attributes.
        restrict: 'E',
        template: "<label for='{{name}}'>{{label}}</label><input name='{{inputName}}' ng-model='key' id='{{name}}' type='{{type}}' ng-required='{{required}}' /><p>{{key}}</p>",
        link: function (scope, elem, attrs) {
            scope.inputName = attrs.key;
        },
        scope: {
            label: '@label',
            name: '@name',
            key: "=",
            required: "@required",
            type: "@type"
        },
    };
});

关键是密钥应该是双向的,以用作模型。