【问题标题】:extract binded angularjs data from html elements with angularjs directive使用 angularjs 指令从 html 元素中提取绑定的 angularjs 数据
【发布时间】:2014-10-26 22:06:48
【问题描述】:

我的指令包含一个 javascript 对象。我尝试使用 jquery 查找绑定到此 javascript 对象的所有 html 元素。 jquery如何获取angularjs对象的绑定数据?

也许上面的代码更好地解释了我的计划。

angular.module('app').directive('highlight', [
    '$rootScope', '$compile', function ($rootScope, $compile) {
        return {
            replace: true,
            templateUrl: 'highlight.html',
            link: function (scope, element, attrs) {

                //this data object do we need to highlight
                scope.Tohighlight;

                $($.find('input, select')).each(function () {
                    //todo extract data if input or selection are binding data
                    //<input type="x" data-ng-model="data" /></span>
                    var data = angular.extractDataFromhtmlelement($(this));
                    //if html element contains our data add some css stuff
                    if(data ==  scope.Tohighlight)
                    {

                    }
                });
            };
    }
]);

我不知道是否存在用于我的目的的 angularjs 方法。如何获取 jquery 对象的绑定 angularjs 数据模型?谢谢。

【问题讨论】:

标签: javascript jquery angularjs angularjs-directive


【解决方案1】:

您可以使用scope() 方法和$parse 服务来实现。 Example

link: function(scope, element) {
    var inputElement = element.find('input');
    var inputModelGetter = $parse(inputElement.attr('ng-model'));
    var inputModelSetter = inputModelGetter.assign;
    function getInputModel() {
        return inputModelGetter(inputElement.scope());
    }
    function setInputModel(value) {
        inputModelSetter(inputElement.scope(), value);
    }
    // ...
}

【讨论】:

  • 谢谢。但是使用 element.find().scope() 我确实得到了元素的视图模型,而不是绑定对象/属性。
  • @Briefkasten,我已经用 $parse 服务更新了我的答案。想想,这就是你想要的。
  • 感谢您的示例。这正是我需要的。我目前的问题是 $parse(boundExpression);表达式抛出“TypeError:对象不是函数”。当我调试 $parse 对象可用。你有什么提示吗?我的修改示例jsfiddle.net/dizel3d/h5Ls3dbv
  • @Briefkasten,你好像给了一个错误的例子。
  • 正确的 URL jsfiddle.net/28y2rps4 。当用户点击模板时,setFocus 函数将被执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-10
  • 2017-06-02
  • 1970-01-01
相关资源
最近更新 更多