基于数组的多个输入

时间:2015-02-12 23:37:33

标签: angularjs angularjs-directive

我的角色体验基本上是大约3天兼职,所以我可能会在这里找到一些简单的东西。

我试图根据数组创建多个输入的动态列表,然后我想从应用程序的其他地方引用它。我尝试过的是从自定义指令加载模板,然后$compile加载它。 <input data-ng-repeat="term in query" data-ng-model="term"> 我的控制器包含$scope.query = [""],它成功创建了第一个空输入框。但是当我修改它时,输入框似乎没有更新$scope.query[0]。这意味着当我尝试使用$scope.query.push("");创建另一个空输入框时(来自keypress侦听器寻找&#34; /&#34;键)我得到一个&#34;重复项不是允许&#34;错误。

我已尝试手动收听输入并根据其值更新scope.$query,但这并没有感觉到非常“有角度”,并导致奇怪的行为。

我需要做些什么来链接这些值。我是沿着正确的路线离开的吗?

1 个答案:

答案 0 :(得分:2)

我做了一个简单的jsfiddle,展示了如何使用角度模型(服务)来存储数据。修改文本输入也将修改模型。要在应用中的其他位置引用它们,您可以在其他控制器中包含TestModel

http://jsfiddle.net/o63ubdnL/

HTML:

<body ng-app="TestApp">
    <div ng-controller="TestController">
        <div ng-repeat="item in queries track by $index">
            <input type="text" ng-model="queries[$index]" />
        </div>
        <br/><br/>
        <button ng-click="getVal()">Get Values</button>
    </div>
</body>

的javascript:

var app = angular.module('TestApp',[]);

app.controller('TestController', function($scope, TestModel)
{
    $scope.queries = TestModel.get();

    $scope.getVal = function()
    {
        console.log(TestModel.get());
        alert(TestModel.get());
    }
});

app.service('TestModel', function()
{
    var queries = ['box1','box2','box3'];
    return {
        get: function()
        {
            return queries;
        }
    }
});