我有一个使用kendo编辑器的案例。
第一个控制器
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更改为&#34; Hello Every Body&#34;我得到的是一个分配给它的值,
$scope.Html = "<div> Hello World</div>";
jsfiddle的例子是 http://jsfiddle.net/aqdasiftekhar/HB7LU/19160/
答案 0 :(得分:0)
关于plunkr的代码的一个工作示例在这里很有用,但乍一看似乎问题是:
k-ng-model="documentName"
你可能意味着:
k-ng-model="{{documentName}}"
会导致documentName被解析为Html,因此将textarea绑定到$ scope.Html。
答案 1 :(得分:0)
经过长时间的努力,
通过将父级(SecondController)父级(Directive's Scope)父级(FirstController)对象更改为模板文件中的k-ng-model来修改
在 TemplateEditor.html 更改以下代码
<div ng-controller="SecondController">
<textarea kendo-editor k-ng-model="documentName" k-encoded="false" k-
options="{{Options}}"></textarea>
</div>
要强>
<div ng-controller="SecondController">
<textarea kendo-editor k-ng-model="$parent.$parent.$parent.Html" k-
encoded="false" k-options="{{Options}}"></textarea>
</div>
经过上述变更,我不需要在指令
中定义变量scope: {
documentName: "="
},
感谢所有试图帮助我的人: - )