2017-02-17 99 views
0

我需要帮助试图将以下变量绑定到使用Angular JS的HTML属性。在我的控制文件,我有这个角度js绑定标题属性

controller.js

$scope.errorDialog = function(errorTitle, errorMessage){ 
     $scope.errorTitle = errorTitle; 
     $scope.errorMessage = errorMessage; 
     $("#dialog-confirm").dialog('open'); 
} 

errorTitle的errorMessage和参数都在其他功能设置。

在我的HTML文件,我有这样的错误消息框(使用jQuery UI)

abc.html

<div title="{{errorTitle}}" id="dialog-confirm" > 
     <p><span class="ui-icon ui-icon-alert" style="float:left; margin:12px 12px 20px 0;"></span>{{errorMessage}}</p> 
</div> 

出于某种原因没有显示的标题。我尝试将其更改为 ng-attr-title =“{{errorTitle}}”,但这也不起作用。我也尝试在title属性中使用一个函数,并返回errorTitle的值,但似乎也不起作用。

+0

的可能的复制[你如何让AngularJS绑定到A标签的title属性?](http://stackoverflow.com/questions/18230868/how-do-you-get-angularjs-to-bind-to-the-title -attribute-of-an-tag) – Canastro

+0

你能展示一些更多的代码吗?特别是你实现jQuery UI消息框的方式。 –

+0

@Canastro我做这件事之前,经历了这个职位。我已经尝试了ng-attr-title,但它仍然不起作用 – NimazSheik

回答

0

我可以看到两个可能的问题在这里:

  1. 你确定你与对话分享你的控制器的$范围?

如果您的控制器无法访问创建对话框的div,这意味着它不是控制器根元素的子树的DOM节点,它不会显示属性(并且不会显示错误)

  1. 你在哪里调用$ scope.errorDialog?

如果您正在$ digest循环之外运行该呼叫,则可以在设置属性后通过调用$scope.$apply来解决此问题。这不会是最好的解决办法,虽然,这将是更好地包装这个函数的调用下面的方式

$scope.$apply(function() { 
    $scope.errorDialog('title', 'message'); 
}) 

这将使AngularJS最终拦截错误发生在执行$scope.errorDialog

+0

$ scope.errorDialog是从controller.js文件中的另一个函数调用的。自显示errorMessage数据以来,errorDialog函数被正确调用。但我无法在index.html文件中使用AngularJs动态设置title属性 – NimazSheik

+0

我真正想要做的是在errorDialog框中动态显示title属性 – NimazSheik