【问题标题】:jQuery plugin and angularjQuery插件和角度
【发布时间】:2013-12-17 10:23:19
【问题描述】:

在我的应用程序中,通过 angular 编写,我为特定类型的输入定义了一个指令...

greengo.directive('selectize', function() {
return {
    restrict: 'A',
    link: function(scope, element, attrs) {
        $(element).selectize({ ... });
    }
};

});

元素是这样声明的..

<select selectize context = "sensors" ng-model = "newSensor.id"></select>

it works fine.. but my model "newSensor.id" isn't updated when an option is selected...

我哪里错了?

【问题讨论】:

    标签: jquery angularjs selectize.js


    【解决方案1】:

    要更新绑定的模型值,您的指令需要在输入指令的控制器上调用 $setViewValue 方法。

    http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController

    大概是这样的:

    greengo.directive('selectize', function() {
        return {
            restrict: 'A',
            require: 'ngModel', // require ng-model directive on element
            link: function(scope, element, attrs, modelCtrl) {
                $(element).selectize({
                    // define onChange handler clled when value changes
                    onChange: function(newValue) {
                        // set new model value, wrapped in scope.apply 
                        // since event is called outside AngularJS
                        scope.$apply(function() {
                            modelCtrl.$setViewValue(newValue); 
                        });
                    }
                });
            }
        };
    });
    

    【讨论】:

    • 好的,它有效!我做了这样的事情: onChange: function(newValue) { // 设置新的模型值,包裹在 scope.apply // 因为事件是在 AngularJS 范围之外调用的。$apply(attr.ngModel+" = "+newValue);但真正的问题是:为什么,如果该插件更新 dom 和视图,模型不遵循此更新?我在理解角度方面缺少什么?
    猜你喜欢
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    相关资源
    最近更新 更多