在一种情况下,我在从模板上运行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" };
};
这适用于应用程序的其他部分,我不知道在这种情况下有什么问题。 有谁知道这里通常会出现什么问题?
答案 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
}]);