javascript – 在AngularJS中将数组绑定到指令变量

我试图得到一个数组到模板,所以我可以使用它的个人值。我的问题是属性变成一个字符串一次在我的模板,所以它不再可访问为{{var [0]}},而是将返回“字符串”的第一个字符,通常是“[”

以下是数据的简化设置:

"varForward": ["100", "1"],
"varBack": ["1", "100"]

以下是与该数据交互的HTML文件的简化部分:

<my-customer-vars value="{{varForward}}">
    </address-numbers>
<my-customer-vars value="{{varBack}}">
    </address-numbers>

最后这里是一个部分,支持用我自己的东西替换自定义标签:

directive('myCustomerVars', function($compile) {
    return {
        restrict: 'E',
        scope: {
            value: "@"
        },
        template:
        '<div>'+
          '<p class="body-text">Some stuff goes here</p>'+
          '<input type="text" name="firstinput" value="{{value[0]}}"> - '+
          '<input type="text" name="secondinput" value="{{value[1]}}">'+
        '</div>',
        replace: true
    }
});

所以这里我是,如果我尝试使用值[0]我得到[如果我尝试获取值[1]我得到“等等。在指令的模板中使用数组有什么帮助?

您需要将“@”更改为“=”,并传入数组而不使用{{}}

喜欢这个:

<my-customer-vars value="varForward">
    </my-customer-vars>
<my-customer-vars value="varBack">
    </my-customer-vars>

指示:

directive('myCustomerVars', function($compile) {
    return {
        restrict: 'E',
        scope: {
            value: "="
        },
        template:
        '<div>'+
          '<p class="body-text">Some stuff goes here</p>'+
          '<input type="text" name="firstinput" value="{{value[0]}}"> - '+
          '<input type="text" name="secondinput" value="{{value[1]}}">'+
        '</div>',
        replace: true
    }
});

这是因为@由@定义的directuve属性内的每个表达式都只作为字符串进行计算,而在另一种方式中它被作为绑定表达式计算。 (用2路绑定,所以要小心)。

http://stackoverflow.com/questions/14695792/binding-array-to-directive-variable-in-angularjs

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – 在AngularJS中将数组绑定到指令变量