从父母的父控制器

时间:2015-10-26 12:06:10

标签: javascript angularjs angularjs-directive kendo-ui angularjs-scope

我有一个使用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/

2 个答案:

答案 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: "="
},

感谢所有试图帮助我的人: - )