从模板调用函数的问题

时间:2015-04-21 15:18:33

标签: javascript jquery angularjs angularjs-scope

在一种情况下,我在从模板上运行Controller上的功能时遇到问题。该值将成为包含函数签名的字符串,而不是应从函数返回的值。

当我在模板标记中使用{{ getSomeObject(d) }}时,它工作正常,并打印对象值,这意味着该函数已在Controller上调用。

我尝试过使用和不使用{{ }}

伪代码:

<div class"xyz" data-lav-fact="getSomeObject(d)"> <!-- Does not work here -->
    {{ getSomeObject(d) }} <!-- Works here -->
</div>

当然,该功能已添加到Controller中的范围:

$scope.getSomeObject = function(data) {
    return { key: "test" };
};

这适用于应用程序的其他部分,我不知道在这种情况下有什么问题。 有谁知道这里通常会出现什么问题?

1 个答案:

答案 0 :(得分:0)

由于您尝试使用$scope功能设置属性,因此您需要{{ interpolate }}并使用ngAttr attribute bindings。这是一个简单的例子,显示了这一点。检查注销的元素之间的差异。在您挖掘时,您会看到正在设置{ key: 'test' }

<div id="without" data-lav-fact="getSomeObject()">without</div>
<div id="with" ng-attr-data-lav-fact="{{ getSomeObject() }}">with</div>

app.controller('ctrl', ['$scope', function($scope) {

    $scope.getSomeObject = function() {
        return { key: 'test' };
    }

    var w = angular.element(document.getElementById('with'));
    var wo = angular.element(document.getElementById('without'));

    console.log(w[0].attributes);  // has value
    console.log(wo[0].attributes); // does not have value
}]);

JSFiddle Link