最近、学習の練習としてAngularを取り上げました。Angular:ng-modelへのメソッドの提供
メソッドをng-model
または1と評価される式に渡したいと思います。
http://jsfiddle.net/C4aGk/で私はフィールドをng-model="record.inner[0].text"
としてハードコーディングしていることがわかりますが、今のところ、ハードコーディングされたゼロを実行時に返されるものに置き換えたいと思います。基準によって選択された時間、id = 1
とする。
私のHTMLコード:
<div ng-controller="MainController" ng-app>
<div ng-repeat="record in records">
<input ng-model="record.inner[0].text"> <span>{{record.outer}}</span>
<div ng-repeat="nested in record.inner">{{nested.id}} - {{nested.text}}</div>
<hr />
</div>
</div>
<br/>
と対応するJS:
function MainController($scope) {
$scope.records = [{
outer: "Hello",
inner: [{
id: 1,
text: "Angular"
}, {
id: 2,
text: "jQuery"
}]
}, {
outer: "World",
inner: [{
id: 1,
text: "Node.js"
}, {
id: 2,
text: "Underscore.js"
}]
}];
$scope.getText = function (record) {
var index = 0;
for (nested in record.inner) {
if (nested.id === 1) {
return "record.inner[" + index + "].text";
}
index++;
}
};
ノー成功を収めてhttps://groups.google.com/forum/#!topic/angular/Pef6LY2rT7gごとにng-model="getText(record)"
を配置しようとした、と別の検索が均等にあるこのhttps://github.com/angular/angular.js/pull/1328を上げ私には役に立たない。
ご協力いただければ幸いです。
'getText'関数にバグがあります。 'for/in'ループはJavaScriptのようには動作しません。 if文を 'if(record.inner [nested] .id === 1){'に変更する必要があります。いずれにせよ、それはあなたの問題全体を解決するものではありません。あなたが何をしようとしているのではなく、何をしようとしているのかを記述する方が良いかもしれません。たとえば、ユーザーが[編集]ボタンをクリックした後で[0]または[1]を編集できるようにする場合は、表示/非表示の別々のフィールドを使用する方がよいでしょう。 – Langdon
私は間違いをキャッチするために@ Langdonありがとう、私は通常for/inループを避けるので、私は少し錆びています。私はDan WahlinのAngular JSガイドをフォローしています。プレゼンテーションで参照されているカスタマーアプリケーションをリメイクしようとしていましたが、これは試してみると、私が引用したリンクごとに機能するはずでした。私はそれが私が間違っている何かでなければならないと思った。私はちょうどその時点で指示を探っています、それは質問がどこから来たかです。 :) – adeelx