AngularJS将数组插入指令中的字符串
AngularJS interpolates array to string inside directive
TL;DR指令将数组插入为字符串
http://plnkr.co/edit/ZwV8jmi0tUTgezWlEq3S?p=preview
这是代码:
index.html
<!DOCTYPE html>
<html data-ng-app="foo">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
<script src="app.js"></script>
</head>
<body data-ng-controller="FooCtrl">
<ul data-foo="{{foo.bar}}">
<li data-ng-repeat="bar in foo.bar">
{{bar}}
</li>
</ul>
</body>
</html>
app.js
!(function(ng) {
'use strict';
FooCtrl.$inject = ['$scope'];
function FooCtrl($scope) {
$scope.foo = {
bar: [
'foo',
'bar'
]
};
}
function FooDirective() {
return {
restrict: 'A',
scope: {
model: '@foo'
},
link: function($scope) {
var watcher = function(model) {
console.log(model, typeof model);
};
$scope.$watch('model', watcher, true);
}
};
}
ng.module('foo', [])
.controller('FooCtrl', FooCtrl)
.directive('foo', FooDirective);
})(window.angular);
为什么我有"typeof model"字符串而不是数组?
如果您想绑定父作用域的实际数组,请使用:
scope: {
model: '=foo'
}
当使用@foo
时,您只是在绑定表达式{{foo.bar}}
的结果。在您的情况下,数组foo
的字符串解释。
添加
或者,当您使用&
符号时,您可以从隔离作用域调用父作用域上的表达式:
scope: {
model: '&foo'
}
并在您的指令中使用进行评估
model().bar
相关文章:
- 属性值被解析为指令中的字符串,尽管使用了“字符串”=&”;
- 具有bool属性的角度指令传递字符串而不是bool
- 将Angular作用域变量的字符串描述传递给指令
- 角度指令模板未解析HTML字符串
- AngularJS指令:将HTML属性作为字符串,用作字典键
- 接受字符串的角度指令
- 角度指令 将属性解释为字符串
- AngularJS:指令 - 传递字符串而不必使用引号
- 在没有指令的情况下将模板编译成angular字符串
- 拆分在ng repeat指令中创建的字符串(ng模型)
- 如何使templateUrl为null或未定义或空字符串的指令
- 计算传递给Angular指令的对象中的字符串表达式
- 从带有输入框列表的Angular自定义指令中获取组合字符串
- AngularJS指令:用单向绑定从字符串解析数组
- 将带点的字符串转换为javascript中访问嵌套对象的指令
- AngularJS -为子指令提供字符串数组
- 在angular指令中输入类型number会产生字符串
- 如何在angular js指令中执行字符串
- 我该如何在我的HTML字符串中消化我的Angular指令?| AngularJS
- 用字符串作为输入的angular2结构指令