Tôi đã sử dụng Angular gần đây như một bài tập học tập.Góc: Cung cấp các phương pháp để ng-model
Tôi muốn chuyển một phương thức tới ng-model
hoặc một biểu thức có thể đánh giá thành một.
Trong fiddle http://jsfiddle.net/C4aGk/ bạn sẽ thấy rằng tôi đã mã hóa trường cứng là ng-model="record.inner[0].text"
và nó hoạt động, bây giờ, tôi muốn thay thế số không mã hóa cứng bằng thứ được trả về lúc chạy- thời gian, được chọn theo tiêu chí cho biết id = 1
.
mã HTML của tôi:
<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/>
và js tương ứng:
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++;
}
};
Tôi đã thử đặt ng-model="getText(record)"
theo https://groups.google.com/forum/#!topic/angular/Pef6LY2rT7g không thành công, và tìm kiếm khác bật lên https://github.com/angular/angular.js/pull/1328 này mà cũng không kém phần vô ích với tôi.
Mọi trợ giúp sẽ được đánh giá cao.
Bạn đã gặp lỗi trong hàm 'getText'. Các vòng lặp 'for/in' không hoạt động như thế trong JavaScript. Bạn cần thay đổi câu lệnh if thành 'if (record.inner [nested] .id === 1) {'. Dù bằng cách nào, điều đó sẽ không khắc phục được toàn bộ vấn đề của bạn. Nó có thể là tốt hơn để mô tả những gì bạn đang cố gắng làm và không phải là cách bạn đang cố gắng để làm điều đó. Ví dụ: nếu bạn chỉ đang cố gắng để người dùng chỉnh sửa [0] hoặc [1] sau khi nhấp vào nút Chỉnh sửa, thì sẽ tốt hơn/dễ dàng hơn trong Góc để có các trường riêng biệt mà bạn hiển thị/ẩn. – Langdon
Cảm ơn bạn @Langdon vì đã mắc lỗi, tôi thường tránh các vòng lặp 'for/in' vì vậy tôi hơi bị gỉ. Tôi đang theo hướng dẫn của Dan Wahlin đến Angular JS và tôi đang cố gắng làm lại ứng dụng của khách hàng được tham chiếu trong bản trình bày khi nó xảy ra với tôi để thử điều này và vì nó cần phải làm việc theo các liên kết tôi trích dẫn. Tôi nghĩ rằng nó phải là một cái gì đó tôi đang làm sai. Tôi chỉ khám phá các chỉ thị vào lúc này, đó là câu hỏi đặt ra. :) – adeelx