Wartość powiązania AngularJS z atrybutem danych


Czy ktoś wie, jak powiązać wartość interpolowaną z atrybutem danych za pomocą AngularJS?
<input type="text" data-custom-id="{{ record.id }}"/>

Kątowy nie wydaje się interpolować tej wartości, ponieważ jest oddzielony od struktury elementu. Jakieś pomysły, jak to naprawić?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Wygląda na to, że w końcu nie ma problemów. Szablon jest analizowany i mój kontroler ładował dane, ale kiedy szablon był analizowany, nie było jeszcze danych. Dyrektywa, którą umieściłem, wymaga, aby dane tam były, a jednocześnie gromadzi tylko puste dane makro.
Rozwiązałem ten problem poleceniem $ watch:
$scope.$watch('ready', function() {
if($scope.ready == true) {
//now the data-id attribute works
}
});

Następnie, gdy kontroler załadował wszystkie rzeczy Ajax, robisz to:
$scope.ready = true;
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Wydaje mi się, że naprawdę potrzebujesz

obietnica/odroczenie
http://docs.angularjs.org/api/ng.%24q
:
// for the purpose of this example let's assume that variables '$q' and 'scope' are
// available in the current lexical scope (they could have been injected or passed in).function asyncGreet(name) {
var deferred = $q.defer(); setTimeout(function() {
// since this fn executes async in a future turn of the event loop, we need to wrap
// our code into an $apply call so that the model changes are properly observed.
scope.$apply(function() {
if (okToGreet(name)) {
deferred.resolve('Hello, ' + name + '!');
} else {
deferred.reject('Greeting ' + name + ' is not allowed.');
}
});
}, 1000); return deferred.promise;
}var promise = asyncGreet('Robin Hood');
promise.then(function(greeting) {
alert('Success: ' + greeting);
}, function(reason) {
alert('Failed: ' + reason););

Edycja: Tak, oto prosty przykład użycia obietnicy z kontrolerem i powiązaniem:
var app = angular.module('myApp', []);app.controller('MyCtrl', function($scope, $q) {
var deferredGreeting = $q.defer();
$scope.greeting = deferredGreeting.promise;/**
* immediately resolves the greeting promise
*/
$scope.greet = function() {
deferredGreeting.resolve('Hello, welcome to the future!');
};/**
* resolves the greeting promise with a new promise that will be fulfilled in 1 second
*/
$scope.greetInTheFuture = function() {
var d = $q.defer();
deferredGreeting.resolve(d.promise); setTimeout(function() {
$scope.$apply(function() {
d.resolve('Hi! (delayed)');
});
}, 1000);
};
});​

Działający JSFiddle:

http://jsfiddle.net/dain/QjnML/4
http://jsfiddle.net/dain/QjnML/4/
/
Zasadniczo chodzi o to, że możesz połączyć obietnicę i zostanie ona spełniona, gdy tylko odpowiedź asynchroniczna ją rozwiąże.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się