我正在为自己创建一个自定义指令,特别是term.js。它通常使用起来非常简单:
var term = new Terminal({
cols: 80,
rows: 24,
screenKeys: true
});
term.open(document.body);
term.write('\x1b[31mWelcome to term.js!\x1b[m\r\n');
为此,我修改了一个hello-world指令示例以满足我的需要:
app.directive('terminal', function() {
return {
restrict: 'E',
scope: {
name: '@'
},
template: '<span>Hello {{name}}<div class="term"></div></span>',
link: function(scope, elem, attrs) {
var term = new Terminal({
cols: 80,
rows: 24,
screenKeys: true
});
// window.w = elem;
term.open(elem.find("div"));
term.write('\x1b[31mWelcome to term.js!\x1b[m\r\n');
}
}
});
我在我的HTML中使用它:
<terminal name="Terminal 1"></terminal>
然而,虽然我看到&#34; Hello Terminal 1&#34;在网页上,控制台中显示以下错误:
TypeError: Cannot read property 'defaultView' of undefined
at Terminal.open (http://localhost:4000/js/term.js:700:43)
at link (http://localhost:4000/js/MyApp.js:23:18)
我是AngularJS的新手,无法弄清楚出了什么问题。 elem.find()似乎返回一个DOM对象,没有像JQuery那样的.get()方法,但是我也用JQquery尝试了它,(而不是jqLite)。那么我看不到的问题是什么?
答案 0 :(得分:1)
我似乎需要这样做:
term.open(elem.find("div")[0]);