访问脚本中的Angular控制器

时间:2016-03-23 17:00:53

标签: javascript html angularjs

目前,我有一些像这样的代码

<div id="{{id}}" ng-controller="ngController as ngCtrl" class="modal fade" role="dialog">
    <div class="modal-dialog">
        <!-- Modal content-->
        <!-- Removed some non important html -->
        <script src="/static/jstree/dist/jstree.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                $.getJSON("/book/modules", function(d) {
                    var moduleDiv = $("#module-div")
                    moduleDiv.jstree({
                        core: {
                            data: d
                        }
                    });
                    moduleDiv.on("select_node.jstree", function(e, data) {
                        ngCtrl.selectedModule = data;
                    });
                });
            });
        </script>
    </div>
</div>

此代码包含在angular指令中。

app.directive("modulesModal", function(){
    return {
        scope: {
            label: "@",
            input: "@",
            ngController: "=",
            id: "@"
        },
        templateUrl: "/static/book_config/html/modules-modal.html",
        link: function($scope, $elem, $attrs){
            // Non important stuff
        }
    };
});

所以我真正想做的是在这里访问一些控制器变量

moduleDiv.on("select_node.jstree", function(e, data) {
    ngCtrl.selectedModule = data;
});

这样我只需通过指令标签将控制器插入其中: E.g

<modules-modal id="myModal" ng-controller="newBookCtrl"></modules-modal>

解决这个问题的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

组合jquery和angular的方法是创建一个angular指令,你做了。但是,您应该在指令中移动jquery代码,而不是在外部执行它并将数据传递给指令。在这种情况下,您可以创建一个指令控制器,然后在控制器本身中加载您的json数据。它应该是这样的(未经测试的代码):

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class DVLAresult extends AppCompatActivity {

        Bundle bundle = getIntent().getExtras();
        String finalPlateNumber = bundle.getString("PlateNumber");
}