![](/img/trans.png)
[英]How do I pass an asynchronous variable from controller to a directive in angularjs
[英]pass string variable from controller to directive angularjs
我正在嘗試將控制器中的字符串變量傳遞給使用隔離范圍的指令。 我設法傳遞了一個對象和一個函數,但似乎無法正常工作!
控制器:
angular.module("app").controller("myCtrl", function($scope)
{
//data that needs to be passed to the directive
$scope.myParams = $scope.params; //object
$scope.myDateOrder = $scope.dateOrder; //string
});
HTML:
<div ng-controller="myCtrl">
<my-dir params="myParams" dateOrder="myDateOrder">
</my-dir>
</div>
指示:
angular.module("app").directive("myDir", [
function() {
return {
restrict: "E",
scope: {
checkPermissions: "&", //pulled from contact directive -> method/function
params: "=", //passed object though from smwAddCustomerBank -> two way binding
dateOrder: "@" //passed string value from smwAddCustomerBank -> one way binding
},
dateOrder無法正常工作。 如果將console.log記錄在控制器中,則可以看到字符串,如果隨后將其記錄在指令中,則該字符串未定義。
有任何想法嗎?
指令屬性必須是kebab-case ,而不是camelCase :
<div ng-controller="myCtrl">
̶<̶m̶y̶-̶d̶i̶r̶ ̶p̶a̶r̶a̶m̶s̶=̶"̶m̶y̶P̶a̶r̶a̶m̶s̶"̶ ̶d̶a̶t̶e̶O̶r̶d̶e̶r̶=̶"̶m̶y̶D̶a̶t̶e̶O̶r̶d̶e̶r̶"̶>̶ ̶
<my-dir params="myParams" date-order="myDateOrder">
</my-dir>
</div>
有關更多信息,請參見《 AngularJS開發人員指南-指令規范化》 。
謝謝-對於其他為此感到困擾的人,我需要做的全部更改是:
params="myParams", date-order="{{ myDateOrder }}"
為了避免使用插值( {{ }}
),請使用帶有"<"
的單向綁定而不是使用"&"
的屬性綁定 :
scope: {
checkPermissions: "&", //pulled from contact directive -> method/function
params: "=", //passed object though from smwAddCustomerBank -> two way binding
̶d̶a̶t̶e̶O̶r̶d̶e̶r̶:̶ ̶"̶@̶"̶
dateOrder: "<" //passed string value from smwAddCustomerBank -> one way binding
}
然后只需執行以下操作:
<my-dir params="myParams" date-order="myDateOrder">
有關更多信息,請參見《 AngularJS綜合指令API參考范圍》 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.