AngularJS将值绑定到数据属性中

AngularJS将值绑定到数据属性中,angularjs,Angularjs,有人知道如何使用AngularJS将插值绑定到数据属性中吗 <input type="text" data-custom-id="{{ record.id }}" /> Angular似乎不会插值该值,因为它是元素结构的一部分。有什么办法解决这个问题吗?看来根本没有问题。模板被解析,我的控制器正在下载数据,但是当模板被解析时,数据还没有出现。我放的指令需要数据在操作系统中,同时它只是拾取空的宏数据 我解决这个问题的方法是使用$watch命令: $scope.$watch('re

有人知道如何使用AngularJS将插值绑定到数据属性中吗

<input type="text" data-custom-id="{{ record.id }}" />


Angular似乎不会插值该值,因为它是元素结构的一部分。有什么办法解决这个问题吗?

看来根本没有问题。模板被解析,我的控制器正在下载数据,但是当模板被解析时,数据还没有出现。我放的指令需要数据在操作系统中,同时它只是拾取空的宏数据

我解决这个问题的方法是使用$watch命令:

$scope.$watch('ready', function() {
  if($scope.ready == true) {
    //now the data-id attribute works
  }
});
然后,当控制器加载了所有ajax内容后,您可以执行以下操作:

$scope.ready = true;

在我看来,你真正想要的是:

编辑:好的,下面是一个简单的示例,说明如何将承诺与控制器和绑定一起使用:

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);
    };
});​
工作区:


基本上,您可以绑定承诺,一旦异步响应解决了它,承诺就会实现。

您可以提供JSFIDLE示例吗?selectOptions与您在问题中提到的record.id有什么关系?这很好。但是,你能提供一个与我的问题更相关的例子吗?我很难理解它。谢谢:)这基本上是直接的形式文件。。。如果能给他一些与他的问题相关的东西,那就太好了。
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);
    };
});​