2015-12-16 8 views
7

ng-modelを分裂器でどのように得ることができますか?分裂器でng-repeatを取得する

<div ng-repeat="field in master.linker | orderBy:'country.name'"> 
    <div> 
     <p> {{ field.country_name }} </p> 
     <input ng-model="field.text"> 
    </div> 
</div> 

私は成功せず、これを使用する:

var result = element.all(by.repeater('field in master.linker').column('field.text')); 

result.forEach(function(entry) { 
    console.log(entry); 
}); 

私が比較したいと思います:

result.forEach(function(entry) { 
    if (entry.country_name === 'en') {  
     expect(entry.text (from ng-repeat)).to.eventually.equal(value) 
    } 
}); 

答えて

5

.column()のみbinding秒、ないmodelのために働くだろう。あなたが入力値を取得したい場合は

var result = element.all(by.repeater('field in master.linker')); 

result.each(function(entry) { 
    var input = entry.element(by.model("field.text")); 

    // do smth with the input 
}); 

map()使用:

var inputValues = result.map(function(entry) { 
    return entry.element(by.model("field.text")).getAttribute("value"); 
}); 

// printing out input values 
inputValues.then(function (values) { 
    console.log(values); 
}); 

コメントから追加質問に答える:あなたのケースで

は、by.model() locator使用

私はng-repeatの他のフィールドを持たない配列を持っていますが、どうすれば "if(field.country_name ===" "en"){expect(field.text).to.eventually.equal(value)}と比較できますか? "?

使用filter():Jéré[email protected]

var fields = element.all(by.repeater('field in master.linker')); 
fields.filter(function (field) { 
    return field.element(by.binding("field.country_name")).getText().then(function (country) { 
     return country === "en"; 
    }); 
}).then(function (filteredFields) { 
    var input = filteredFields[0].element(by.model("field.text")); 
    expect(input.getAttribute("value")).to.eventually.equal(value); 
});; 
+0

申し訳ありませんが、更新しました。 – alecxe

+0

私は 'input'を出力しようとしているならば、オブジェクトの識別子を{ptor_: {controlFlow:[Function]、 –

+0

@JérémieChazelle、これは' ElementFinder'インスタンスなので取得します。あなたの希望する出力は何ですか?入力の値は?ありがとう。とにかく、@JérémieChazelle – alecxe

関連する問題