bat*_*man 10 javascript json angularjs
我正在尝试使用angularJs 创建自定义标记.此标记具有名为的属性data.data得到它这样的价值<skillviz data="{{user.info}}"></skillviz>.user.info是一个JSON对象.但是,当我尝试data在我的指令定义中访问此属性时,我得到了undefined.这样做的正确方法是什么?
HTML代码
<div id="info-box" ng-repeat="user in users | orderBy:orderProp">
<div id="skill-block">
<skillviz height="50" data="{{user.skills}}"></skillviz>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
users是在控制器中声明的JSON类型对象.所以基本上users将是一个列表(数组)
{"first_name": "Tifanny",
"last_name": "Maxwell",
"skills": [
{"name": "Java", "score": 4.8, "color" : "red"},
{"name": "C++", "score": 4.0, "color" : "blue"},
]
},
Run Code Online (Sandbox Code Playgroud)
services.js
angular.module('yott', []).directive('skillviz', function () {
return {
restrict: 'E',
link: function (scope, element, attrs) {
element.html("<script>alert(" + attrs['data'] + ")</script>");
});
}
}
});
Run Code Online (Sandbox Code Playgroud)
警告框弹出说未定义
Jua*_* NR 19
假设您有以下标记:
<div ng-controller="MyController" data-id="someCustomValue">
</div>
Run Code Online (Sandbox Code Playgroud)
现在,在您的控制器中,您可以执行以下操作来访问data-id:
app.controller('MyController', function ($scope, $attrs) {
console.log($attrs.id); // Prints 'someCustomValue'
});
Run Code Online (Sandbox Code Playgroud)
使用$observe观察属性的变化:
attrs.$observe(\'data\', function(value) {\n console.log(\'data has changed value to \' + value);\n});\nRun Code Online (Sandbox Code Playgroud)\n\n和$set改变值:
attrs.$set(\'data\', \'new value\');\nRun Code Online (Sandbox Code Playgroud)\n\n@或者,您可以使用(绑定本地范围)将其传递/链接到指令范围, &(提供一种在父范围上下文中执行表达式的方法)或=(设置双向绑定)\xe2\x80\x93在这里解释
angular.module(\'yott\', []).directive(\'skillviz\', function () {\n return {\n restrict: \'E\',\n scope { data: "=data" },\n link: function (scope, element, attrs) {\n element.html("<script>alert(" +scope.data + ")</script>");\n });\n }\n }\n });\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
26751 次 |
| 最近记录: |