【发布时间】:2016-01-25 12:42:34
【问题描述】:
我有一个使用剑道编辑器的案例。
第一个控制器
app.controller('FirstController', ['$scope', function($scope) {
$scope.Html = "<div> Hello World</div>";
}
Tempalte 的第二个控制器
app.controller('SecondController', ['$scope', function($scope) {
$scope.Options= [{Options1, Option2}];
}
指令
app.directive('htmlEditor', ['$http', function($http) {
return {
restrict: 'EA',
replace: true,
scope: {
documentName: "="
},
link: function (scope, element, attr) {
$http.get("ngview/TemplateEditor.html")
.success(function (data) {
element.html($compile(data)(scope));
});
}
}
}]);
TemplateEditor.html(我在模板中使用 SecondController)
<div ng-controller="SecondController">
<textarea kendo-editor k-ng-model="documentName" k-encoded="false" k-
options="{{Options}}"></textarea>
</div>
页面 HTML(我使用 FirstController 的地方)
<div ng-controller="FirstController" class="col-md-8">
<div html-editor="HtmlEditor"
document-name="Html">
</div>
</div>
现在,如果对 html 进行一些更改,并将文本从 hello world 更改为“Hello Every Body”,我会得到相同的一个值,该值分配给它,
$scope.Html = "<div> Hello World</div>";
JSFiddle 示例是 https://jsfiddle.net/aqdasiftekhar/HB7LU/19160/
【问题讨论】:
-
我在你的代码中看不到
$scope.Html变量在除第一个控制器之外的任何地方被引用,所以我看不到kendo-editor怎么知道值第一,更别说能更新了。 -
我的错误,document-html="DocumentHtml" 实际上是 document-html="Html"
-
但是您的指令范围需要
document-name属性,而不是document-html -
再次修复,感谢高亮,其实我打错了,现在我更正了。问题依然存在
-
你为什么不使用
templateUrl?
标签: javascript angularjs angularjs-directive kendo-ui angularjs-scope